Cachando los datos del usuario con PHP

Hace unos dias me pidieron el trabajo que hiciera un pequeño modulo para identificar que usarios ingresan al «sistema» y de paso traernos la mayor cantidad de datos posibles osea pos la ip el navegador etc… xD en fin se que por la rad encontraremos n numero de codigos para hacer esto pero vale mientras algunos le ponen mucha crema a sus tacos jejejeje yo me he ido por algo mas simple y realmente nada complejo pero que es igualmente efectivo

asi que pues comencemos la primera parte es digamos la «funcion principal» ya que es la que nos da la ip del usuario

function obtener_ip(){//Funcion para cachar la IP

	if (getenv("HTTP_X_FORWARDED_FOR")){
		$ip = getenv("HTTP_X_FORWARDED_FOR");
		$client = gethostbyaddr($_SERVER['HTTP_X_FORWARDED_FOR']);
	}else{
		$ip = getenv("REMOTE_ADDR");
		$client = gethostbyaddr($_SERVER['REMOTE_ADDR']);
	}

	$str = preg_split("/\./", $client);
	$i = count($str);
	$x = $i - 1;
	$n = $i - 2;
	$isp = $str[$n] . "." . $str[$x];

	return $ip;
}

Como pueden ver es una funcion bastante sencilla (nada del otro mundo jejej) en fin el siguiente es detectar el navegador

function obtener_navegador(){//Funcion para cachar el tipo de navegador
	if((ereg("Nav", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Gold",
	$_SERVER["HTTP_USER_AGENT"])) || (ereg("X11",
	$_SERVER["HTTP_USER_AGENT"])) || (ereg("Mozilla",
	$_SERVER["HTTP_USER_AGENT"])) || (ereg("Netscape",
	$_SERVER["HTTP_USER_AGENT"])) AND (!ereg("MSIE",
	$_SERVER["HTTP_USER_AGENT"]) AND (!ereg("Konqueror",
	$_SERVER["HTTP_USER_AGENT"])))) $browser = "Netscape";
			elseif(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
			elseif(ereg("Lynx", $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
			elseif(ereg("Opera", $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
			elseif(ereg("Netscape", $_SERVER["HTTP_USER_AGENT"])) $browser = "Netscape";
			elseif(ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])) $browser = "Konqueror";
			elseif((eregi("bot", $_SERVER["HTTP_USER_AGENT"])) ||
	(ereg("Google", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Slurp",
	$_SERVER["HTTP_USER_AGENT"])) || (ereg("Scooter",
	$_SERVER["HTTP_USER_AGENT"])) || (eregi("Spider",
	$_SERVER["HTTP_USER_AGENT"])) || (eregi("Infoseek",
	$_SERVER["HTTP_USER_AGENT"]))) $browser = "Bot";
	else $browser = "Other";
	return $browser;
}

Ok bueno ahora ya tenemos el navegador y la IP pues ya tenemos el 50% de la tarea y lo que sigue es cachar los demas datos xD pues bueno para ello hermos uso de una de las mejores webs para revisar datos a partir de una IP (http://www.whatismyipaddress)

ya que practicamente lo que hacemos es procesar su web para poder extraer los datos (por no decir robar xDDD)

function extraer_datos($ip_address){//Funcion para procesar los datos de What Is My Ip Address

	$url = "http://whatismyipaddress.com/ip/".$ip_address;
	$cont = 0;
	$ch = curl_init();

	curl_setopt($ch, CURLOPT_URL, $url);
	ob_start();
	curl_exec($ch);
	curl_close($ch);

	$cache = ob_get_contents();
	ob_end_clean();

	$destripa = strip_tags($cache);
	$destripa = trim($destripa,"\n");
	$cosas = explode("\n",$destripa);

	$primer_paso = array();

	foreach($cosas as $val){
		if($cont >50 && $cont <61){
			$primer_paso[] = $val;
		}
		$cont++;
	}

	return $primer_paso;
}

Bien ya tenemos tenemos los datos de la pagina ahora bien el paso final procesar los datos para hacer con ellos lo que sea xD que se nos ocurra hacer asi que usamos esta funcion que basicametne nos regresa un array con los datos que necesitamos

function procesar_datos($datos){//Funcion para separar los datos de la funcion getCountry

	$proceso = array("hostname"=>"",
					 "isp"=>"",
					 "proxy"=>"",
					 "type"=>"",
					 "asignacion"=>"",
					 "pais"=>"",
					 "region"=>"",
					 "ciudad"=>"",
					 "latitud"=>0,
					 "longitud"=>0,
					 "cod_area"=>0,
					 "zip_code"=>0);

	$pos_isp = strpos($datos[0],'ISP');
	$org = strpos($datos[0],'Organization');
	$taip = strpos($datos[0],'Type');
	$asig = strpos($datos[0],'Assignment');

	$sub_cadena = substr($datos[0],$pos_isp,$org);
	$org2 = strpos($sub_cadena,'Organization');//Cachamos la posicion de Org. en la sub cadena
	$prx = strpos($sub_cadena,'Proxy');
	$sub_cadena2 = substr($datos[0],$taip);//2do trozo de la cadenota para tomar el tipo y el asignament
	$tp = strpos($sub_cadena2,'Assignment');

	$hostname = substr($datos[0],0,$pos_isp);
	$isp = substr($sub_cadena,0,$org2);
	$proxy = substr($sub_cadena,$prx);
	$asignacion = substr($sub_cadena2,$tp);
	$type = substr($sub_cadena2,0,$tp);

	$proceso['hostname'] = $hostname;
	$proceso['isp'] = $isp;
	$proceso['proxy'] = $proxy;
	$proceso['type'] = $type;
	$proceso['asignacion'] = $asignacion;
	$proceso['pais'] = $datos[3];
	$proceso['region'] = $datos[4];
	$proceso['ciudad'] = $datos[5];
	$proceso['latitud'] = $datos[6];
	$proceso['longitud'] = $datos[7];
	$proceso['cod_area'] = $datos[8];
	$proceso['zip_code'] = $datos[9];

	return $proceso;

}

El uso de estas funciones mmmm bastante sencillo ejejeje como nota final estas funciones las realize a con algo de prisa asi que realmete no se si whatismyipaddress tenga algun plug gratuito para integrarlo a alguna web ,pero bueno a falta de tiempo no realize alguna investigacio en fin la cuestion es que las funciones cumplen con su proposito

             $navegador = obtener_navegador();
	$get_ip = obtener_ip();
	$web = extraer_datos($get_ip);
	$datos = procesar_datos($web);
Related Posts Plugin for WordPress, Blogger...

publicidad

3 Comments

  1. Vamos a ver, ¿qué mierda de palabra es CACHAR?
    Vamos a suponer que quieres decir CACHEAR, que tampoco es español, pero joder CACHAR???
    Inculto de mierda.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.