Detectar Llegada por Buscador en PHP

Este código sirve para detectar si un usuario llegó o no por algún buscador como por ejemplo Google, Bing, etc, aquí se hace uso de la superglobal $_SESSION. este tipo de código se usa por ejemplo para mostrar cierto datos si llegó por Google o para controlar las impresiones de Adsense.

Si tienes un sitio web bastante visitado y estás con el problema de impresiones de Adsense que a la larga te bajan el ingreso (muchas impresiones, pocos clicks) quizás quieras limitar las impresiones de publicidad. Por regla general si un usuario es recurrente a tu sitio web (la visita siempre) este entra por un marcador en su navegador o escribiendo la URL en la barra de direcciones, y este usuario casi nunca o jamás le da click en la Publicidad. así que te está generando impresiones.

Además que al ser usuario recurrente quizás quieras «recompensarlo» al no mostrarle publicidad y por tanto un sitio más limpio para que pueda navegar.

<?php
	session_start(); //comenzamos la session: Tema: http://www.elcodigofuente.com/como-usar-variable-session-php-305/
	if (!isset($_SESSION['llego_por_buscador'])) //Verificamos si la variable existe, SI no existe ejecutamos el codigo, si existe es porque ya llego ya sea por buscador o directamente
	{
		$_SESSION['llego_por_buscador']=FALSE; //Seteamos que llego de manera directa.
		$buscadores="google.|yahoo.|ask.|alltheweb.|aol.|hotbot.|altavista.|gigablast.|lycos.|netscape.|metacrawler.|bing."; //buscadores predefinidos, puedes aumentar mas
		$spiders = preg_quote("almaden.ibm.com|gigabot|appie 1.1|architext|ask jeeves|asterias2.0|augurfind|baiduspider|bannana_bot|bdcindexer|crawler|crawler@fast|docomo|fast-webcrawler|fluffy the spider|frooglebot|geobot|googlebot|mediapartners-google|gulliver|henrythemiragorobot|ia_archiver|infoseek|kit_fireball|lachesis|lycos_spider|mantraagent|mercator|msnbot|moget|muscatferret|nationaldirectory-webspider|naverrobot|ncsa beta|netresearchserver|ng/1.0|osis-project|polybot|pompos|scooter|seventwentyfour|sidewinder|sleek spider|slurp|steeler|szukacz|t-h-u-n-d-e-r-s-t-o-n-e|teoma|turnitinbot|ultraseek|vagabondo|voilabot|w3c_validator|zao|zyborg", '/'); //Colocamos la lista de arañas, ya que a ellas SI le vamos a mostrar la publicidad.

		if (preg_match('/('.$buscadores.')/i', $_SERVER['HTTP_REFERER'])) //verficamos si llegó por buscador
		{
			$_SESSION['llego_por_buscador']=TRUE; //si llego por buscador, entonces le ponemos TRUE
		}

		if (preg_match('/('.$spiders.')/i', strtolower($_SERVER['HTTP_USER_AGENT']))) //si es una araña, le ponemos en FALSE
		{
			$_SESSION['llego_por_buscador']=FALSE; //FALSE si es una araña, el equivalente a entrar directamente
		}
	}
?>

Este código por ejemplo, lo puedes usar en el HEADER de tu plantilla, ya sea en WordPress, Joomla, vBulletin, etc. y luego usarlo en cualquier parte del sitio invocando a la variable $_SESSION[‘llego_por_buscador’] donde si es TRUE quiere decir que llegó por buscador.

2 Comentarios para “Detectar Llegada por Buscador en PHP”

  1. amigo necesito ayuda;yo tengo una tabla para filtra por fecha;pero a la vez necesito solo que me reflejen el rango de fecha por el nombre que voy a ingresar;
    ejemplo ingreso los rango de fecha y ala vez necesito ingreso un nombre que tengo registro y solo quiero que se filtren por el nombre que ingrese.
    necesito declarar mas variables en isset

    ya tengo esto pero necesito agregar una variable mas

    Listado Por Fecha

    Búsqueda por Fecha

    Fecha comienzo:

    Fecha final:

    Nombres:

    <?php
    $SDATE = $_GET['start_date'];
    $SSDATE = explode('/', $SDATE);
    $START_DATE = $SSDATE[2]."-".$SSDATE[0]."-".$SSDATE[1];
    echo('’.$START_DATE.»);

    $EDATE = $_GET[‘end_date’];
    $EEDATE = explode(‘/’, $EDATE);
    $END_DATE = $EEDATE[2].»-«.$EEDATE[0].»-«.$EEDATE[1];
    echo(».$END_DATE.»);

    //SELECT * FROM test WHERE course_date BETWEEN ‘2015-01-09’ AND ‘2015-10-01’

    $strsql = «SELECT * FROM prueba2 WHERE Fecha BETWEEN ‘$START_DATE’ AND ‘$END_DATE’ and nombres=’$m'»;
    $rs = mysql_query($strsql) or die(mysql_error());
    $row = mysql_fetch_assoc($rs);
    $total_rows = mysql_num_rows($rs);

    //print_r($row);
    ?>

    no
    fecha
    unid_acad
    nombres
    seccion
    categ_act

    0) {
    do {
    ?>

    No data found.

    Regresar

    necesito declarar la varible que esta dentro de la consulta (nombres=’$m’)

    1. No se que andas haciendo con todo eso codigo, pero para agregar un campo texto en un select es:

      $strsql = «SELECT * FROM prueba2 WHERE Fecha BETWEEN ‘».$START_DATE.»‘ AND ‘».$END_DATE.»‘ and nombres like ‘%». $nombre .»%'»;

      y depende si lo mandas por un metodo POST o GET es que debes usar el $nombre= $_POST[‘nombre’] o $nombre= $_GET[‘nombre’] según corresponda.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *