Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Mad Antrax en 13 Diciembre 2006, 10:20 am



Título: Google Cloaking
Publicado por: Mad Antrax en 13 Diciembre 2006, 10:20 am
Buenas gente, estoy escribiendo un script para hacer Cloaking en un servidor de pruebas. Y tengo varias dudas...

1) Cual es la mejor forma de obtener la IP de un visitante? actualmente uso: $_SERVER['REMOTE_ADDR'];

2) Para traducir una IP a nombre dns que función es la más correcta? actualmente uso: gethostbyaddr();

3) Que funcion me sirve para saber si una cadena de texto existe dentro de otra cadena? Por ejemplo:

$cadena = "www.php.net";
$buscar = "net";

Necesito una función que si le paso $cadena y $buscar me devuelva True.


Título: Re: Google Cloaking
Publicado por: Ertai en 13 Diciembre 2006, 13:32 pm
1.- Lo que usas esta bastante bien, pero entra en problemas cuando se usa un proxy.

Te hago un copy&paste de:

http://www.eslomas.com/index.php/archives/2005/04/26/obtencion-ip-real-php/

Citar
    *  REMOTE_ADDR: dirección ip del cliente
    * HTTP_X_FORWARDED_FOR: si no está vacío indica que se ha utilizado un proxy. Al pasar por el proxy lo que hace éste es poner su dirección IP como REMOTE_ADDR y añadir la que estaba como REMOTE_ADDR al final de esta cabecera. En el caso de que la petición pase por varios proxys cada uno repite la operación, por lo que tendremos una lista de direcciones IP que partiendo del REMOTE_ADDR original irá indicando los proxys por los que ha pasado.

Y un trozo de código acorde al texto  ;)

Código:
<?php
$ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
echo 'La IP es: '.$ip; ?>

2.- Si, la función gethostbyaddr es la más indicada.

3.- La función que necesitas es strpos() o, si lo quieres case-sensitive, stripos().

Otro copy de php.net. Te lo pongo porque has de fijarte en los comentarios, por la posición 0 y el valor false!

Código:
<?php
$mystring = 'abc';
$findme  = 'a';
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
   echo "The string '$findme' was not found in the string '$mystring'";
} else {
   echo "The string '$findme' was found in the string '$mystring'";
   echo " and exists at position $pos";
}

// We can search for the character, ignoring anything before the offset
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, not 0
?>

Saludos!