¿Cómo mostrar contenido distinto mediante Referer?

  • Autor Autor Fox
  • Fecha de inicio Fecha de inicio
Fox

Fox

1
Zeta
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Hola!, tengo una duda.

Tengo la duda, cómo puedo mostrar contenido distinto a un usuario que llegue desde otra web.

Me refiero a que si un usuario llega desde "web1.com/loquesea" o "web2.com/loquesea", entonces me muestre otro contenido distinto al contenido original.

Actualmente tengo el siguiente código (tengo 2 single.php)

<?$referer = $_SERVER['HTTP_REFERER'];$fromURL = array("http://www.web1.com/loquesea","http://www.web2.com/loquesea","http://www.web3.com/loquesea","http://www.web4.com/loquesea");if(!in_array($referer,$fromURL)) { include(TEMPLATEPATH . '/singlefalso.php'); } else { include(TEMPLATEPATH . '/singlereal.php'); }?>


Pero éste no me funciona, ya que si la visita llega desde donde sea, siempre le muestra el singlefalso.php

¿Alguna sugerencia, por favor?
 
Pues con el código que muestras nadamas estas diciendo que si la url de donde proviene el usuario esta en el arreglo $fromURL entonces te mostrara un archivo o mejor dicho te enviara esta dirección /singlereal.php o en caso contrario envía al usuario a /singlefalso.php.
 
Pues con el código que muestras nadamas estas diciendo que si la url de donde proviene el usuario esta en el arreglo $fromURL entonces te mostrara un archivo o mejor dicho te enviara esta dirección /singlereal.php o en caso contrario envía al usuario a /singlefalso.php.


Gracias por la respuesta compañero, pero cómo puedo hacer para que tome en cuenta la web entera?, es decir que si viene de "www.web1.com", tome en cuenta todas las URL de la web, es decir: "www.web1.com", "web1.com", "http://web1.com", "web1.com/loquesea", "web1.com/otracosa"

Desde ya, muchas gracias.
 
Podés usar strpos para eso..

$referer = $_SERVER['HTTP_REFERER'];;
$buscar = "web1.com";
$resultado = strpos($referer , $buscar);

if($resultado !== FALSE){
include(TEMPLATEPATH . '/singlereal.php');
}else{
include(TEMPLATEPATH . '/singlefalso.php');
}
 
Gracias por la respuesta, lo he probado y me anda bien, pero tengo problemas al agregar varias URL, lo he probado usando:

$buscar = ("web1.com","web2.com");

Pero me tira error, cómo podría arreglarlo?

Desde ya, gracias.

Podés usar strpos para eso..

$referer = $_SERVER['HTTP_REFERER'];;
$buscar = "web1.com";
$resultado = strpos($referer , $buscar);

if($resultado !== FALSE){
include(TEMPLATEPATH . '/singlereal.php');
}else{
include(TEMPLATEPATH . '/singlefalso.php');
}
 
Ok te complemento el codigo un poco:
PHP:
$fromURL = array("web1.com","web2.com","web3.com","web4.com");
$referer = $_SERVER['HTTP_REFERER'];
$cont = 0;
foreach($fromURL as $buscar){
	$resultado = strpos($referer , $buscar);
	if($resultado != FALSE){
		$cont = 1;
	}
}

if($cont != 1) {
include(TEMPLATEPATH . '/singlefalso.php'); 
} else { 
include(TEMPLATEPATH . '/singlereal.php'); 
}
 
Gracias compañero, me funcionó a la perfección.

Un abrazo!

Ok te complemento el codigo un poco:
PHP:
$fromURL = array("web1.com","web2.com","web3.com","web4.com");
$referer = $_SERVER['HTTP_REFERER'];
$cont = 0;
foreach($fromURL as $buscar){
    $resultado = strpos($referer , $buscar);
    if($resultado != FALSE){
        $cont = 1;
    }
}

if($cont != 1) {
include(TEMPLATEPATH . '/singlefalso.php'); 
} else { 
include(TEMPLATEPATH . '/singlereal.php'); 
}
 
Gracias compañero, me funcionó a la perfección.

Un abrazo!

Lo del [MENTION=26878]darkdraco[/MENTION] funciona bien, pero es mejor así:

PHP:
$referer = $_SERVER['HTTP_REFERER'];
$fromURL = "/web1.com|web2.com|web3.com|web4.com/";
if (!preg_match($fromURL, $referer))
    include(TEMPLATEPATH . '/singlefalso.php';
else
    include(TEMPLATEPATH . '/singlereal.php';
 
Lo del [MENTION=26878]darkdraco[/MENTION] funciona bien, pero es mejor así:

hola queria probar algo como esto, el mostrar conenidos diferentes dependiendo de que web vienen, y tengo una duda este codigo donde es que se pone?
 
hola queria probar algo como esto, el mostrar conenidos diferentes dependiendo de que web vienen, y tengo una duda este codigo donde es que se pone?

Donde quieras que aparezca lo que quieres mostrar:

PHP:
<?php
$referer = $_SERVER['HTTP_REFERER']; 
$fromURL = "/web1.com|web2.com|web3.com|web4.com/"; 
if (!preg_match($fromURL, $referer)):
?>
CONTENIDO SI NO VIENE DER ALGUNA DE LAS WEBS QUE ESTÁN EN EL ARRAY
<?php
else: 
?>
CONTENIDO SI VIENE DER ALGUNA DE LAS WEBS QUE ESTÁN EN EL ARRAY
<?php
endif;
?>
 
Donde quieras que aparezca lo que quieres mostrar:

PHP:
<?php
$referer = $_SERVER['HTTP_REFERER']; 
$fromURL = "/web1.com|web2.com|web3.com|web4.com/"; 
if (!preg_match($fromURL, $referer)):
?>
CONTENIDO SI NO VIENE DER ALGUNA DE LAS WEBS QUE ESTÁN EN EL ARRAY
<?php
else: 
?>
CONTENIDO SI VIENE DER ALGUNA DE LAS WEBS QUE ESTÁN EN EL ARRAY
<?php
endif;
?>
buen code!!! 😉
 
Donde quieras que aparezca lo que quieres mostrar:

PHP:
<?php
$referer = $_SERVER['HTTP_REFERER']; 
$fromURL = "/web1.com|web2.com|web3.com|web4.com/"; 
if (!preg_match($fromURL, $referer)):
?>
CONTENIDO SI NO VIENE DER ALGUNA DE LAS WEBS QUE ESTÁN EN EL ARRAY
<?php
else: 
?>
CONTENIDO SI VIENE DER ALGUNA DE LAS WEBS QUE ESTÁN EN EL ARRAY
<?php
endif;
?>

y para evitar enviar el referer ? e intentado asi

PHP:
<meta name="referrer" content="never"/>
<meta http-equiv="refresh" content="0; url=<?=$_GET['v'];?>">

pero aun sigue mostrando el referer, con herramientas como esta
PHP:
http://anonym.to/?http://forobeta.com/

si ya no muestra el referer me hechas una mano?
 
Atrás
Arriba