les dejo un script para mostrar la ip real de un visitante utilizando php
if ($_SERVER['HTTP_X_FORWARDED_FOR'] != '' ) {
$realip = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : ((!empty($_ENV['REMOTE_ADDR'])) ? $_ENV['REMOTE_ADDR'] : "Desconocido" );
$entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);
reset($entries);
while (list(, $entry) = each($entries)) {
$entry = trim($entry);
if (preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list)) {
$private_ip = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/', '/^10\..*/');
$found_ip = preg_replace($private_ip, $realip, $ip_list[1]);
if ($realip != $found_ip) {
$realip = $found_ip; break;
}
}
}
} else {
$realip = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : ((!empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : "Desconocido");
}
para mostrarla simplemente…
<? print $realip; ?>
Existen múltiples maneras de leer archivos utilizando PHP, pero vamos a usar una que es muy práctica para el entendimiento del lenguaje, ya que además de ver algunas funciones adicionales, se utiliza un bucle para leer cada línea, lo que desmiente el temor que se tiene por la dificultad de manejar estas estructuras.
Para este ejemplo supondremos que el archivo a leer es archivo.txt, y que tendrá algún contenido para mostrar, ya que eso es lo que nos interesa.
<? $archivo = file(”archivo.txt”); $lineas = count($archivo); for($i=0; $i < $lineas; $i++){ echo $archivo[$i]; } ?>
Lo primero que hacemos es declarar la variable $archivo que genera un array con cada una de las líneas del archivo (por medio de la función file()).
Luego $lineas hace uso de la función count(), que cuenta el número de elementos de un array, en este caso, el array que se generó con las líneas del archivo. De ahí deducimos, que el número de elementos del array es el número de líneas del archivo
Finalmente, se ejecuta un bucle hasta que se llegue al final del archivo (total de número de líneas) y por cada iteración se escribe en pantalla el contenido de la línea que se está leyendo. Como ves, es una forma muy sencilla y útil de leer archivos
Autor: Jorge A. Torres y Alexander Garzón
http://www.elguruprogramador.com.ar/tutoriales/php/ejemplos-utiles.htm
Captcha es una palabra aleatoria y en ocasiones distorsionada mostrada como imagen que se utiliza para evitar que los robots accedan a determinadas web. Este tipo de verificación es utilizada por los programadores para evitar el spam en lo blogs por ejemplo.

La idea básica para crear un Captcha es generar primero un texto aleatorio, luego basado en este texto generamos una imagen la cual se muestra al usuario, finalmente se compara el texto ingresado por el usuario con la palabra aleatorio generada.
Generar el Captcha
La primero es crear una imagen con un texto aleatorio, para ello un archivo llamado captcha.php el cual creará dinámicamente el texto. Para ello creamos una función llamada randomText que se encarga de generar una cadena de texto aleatorio, acepta un parámetro el cual le indica cuantos caracteres puede tener el texto generado.
// archivo: captcha.php
function randomText($length) {
$pattern = “1234567890abcdefghijklmnopqrstuvwxyz”;
for($i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,35)};
}
return $key;
}
$_SESSION['tmptxt'] = randomText(8);
$captcha = imagecreatefromgif(“bgcaptcha.gif”);
$colText = imagecolorallocate($captcha, 0, 0, 0);
imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);
header(“Content-type: image/gif”);
imagegif($captcha);
Crear el formulario para verificar el Captcha
Lo siguiente es mostrar la imagen generado para que el usuario pueda leerlo e ingresar el texto en el formulario para ser verificado. Naturalmente esta verificación será parte de un formulario mucho mas grande pero solo incluimos un campo para propósitos de ejemplo. Esto lo incluimos en el archivo captchademo.php, note que al incluir la imagen hemos colocado la ruta al php que genera la imagen.
Ingresar el texto mostrado en la imagen <br>
<form action=“captchademo.php” method=“post”>
<input name=“btget” type=“submit” value=“Verificar Codigo”>
<input name=“action” type=“hidden” value=“checkdata”>
</form>
Verificar el texto Ingresado
Lo siguiente es verificar el texto ingresado en el formulario y compararlo con la variable $_SESSION['tmptxt'] que contiene el texto generado aleatoriamente. Para ello verificamos que se haya enviado el formulario y luego comparamos el texto ingresado con el texto que tenemos en la variable de sesión.
if ($_POST['action'] == “checkdata”) {
if ($_SESSION['tmptxt'] == $_POST['tmptxt']) {
echo “Bienvenido”;
} else {
echo “Inténtalo nuevamente”;
}
exit;
}
Ideas Adicionales
Nuestro ejemplo es sencillo, pero se puede mejorar esto por ejemplo dibujando lineas aleatorios con ángulos aleatorios sobre el texto, también se puede dibujar el texto con una inclinación aleatorio, también se pueden colocar cada letra con distintos ángulos de rotación y color. Con estos adicionales pueden lograr un Captcha mucho mas consistente y seguro.
Pueden ver el ejemplo funcionando en captchademo.php y también pueden descargar los archivos con las fuentes para que lo descarguen y prueben.