Aqui les presento un script que diseñe para guardar la pagina y otros datos en un archivo .txt
funciones.php
<?php
/*
HECHO POR tttony 2007
http://tttony.blogspot.com/
*/
function referer() {
// IP del cliente
$remote_ip = (isset($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : "(Sin IP)";
// ISP del cliente
$remote_isp = gethostbyaddr($remote_ip);
// Aqui la pagina que lo refirio
$referer = (isset($_SERVER['HTTP_REFERER'])) ? strtolower($_SERVER['HTTP_REFERER']) : "error";
// No guardar mis propios referers :)
$my_host = strpos($referer, $_SERVER['HTTP_HOST']);
if (($referer != "error") && ($my_host === false)) {
$file = "referer.txt";
$fo = @fopen($file, "rb");
$content = (is_resource($fo)) ? @fread($fo, filesize($file)) : "";
@fclose($fo);
$exist_ip = strpos($content, $remote_ip);
$exist_ref = strpos($content, $referer);
if (($exist_ip === false) || ($exist_ref === false)) {
$str = time() . " " . $remote_ip . "(" . $remote_isp . ") " . $referer . "\n";
$fo = @fopen($file, "ab");
if (is_resource($fo)) @fwrite($fo, $str);
@fclose($fo);
}
}
}
referer();
?>
Como ven la funcion no retorna ningun valor, en el archivo .txt se guarda:
1. Fecha y hora actual
2. IP del cliente (3. ISP del cliente)
4. El referer
--------
Ahora vamos a leer el archivo .txt y lo presentamos en HTML y bien ordenado.
referer.php
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
body {
margin-left: 10px;
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
}
a:link {
color: #000099;
}
a:visited {
color: #990000;
}
a:hover {
color: #FF0000;
}
-->
</style>
<title>Referer</title>
<?php
// RECUERDA COLOCAR BIEN AQUI LA DIRECCION DEL ARCHIVO
$lineas = @file("referer.txt") or die("No existe el archivo");
echo "<h2>Líneas: ".count($lineas)."</h2>\n";
echo '<table border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#999999">';
echo "<tr bgcolor=#EBEBEB>\n";
echo "<th>Fecha</th>\n";
echo "<th>IP(ISP)</th>\n";
echo "<th>URL</th>\n";
echo "</tr>\n";
$bg_color = "#CCCCCC";
foreach ($lineas as $linea_num => $linea) {
$linea = str_replace("\n", "", $linea);
$arr = explode(" ", $linea);
echo "<tr bgcolor=$bg_color>\n";
echo "<td>".date("d-m-Y, H:i:s", $arr[0])."</td>";
echo "<td>".$arr[1]."</td>";
echo "<td><a target=_blank href=".$arr[2].">".$arr[2]."</a></td>\n";
echo "</tr>\n";
$bg_color = ($bg_color == "#CCCCCC") ? "#EBEBEB" : "#CCCCCC";
}
echo "</table>\n";
?>
Debido a que esto es para que lo lea solo el admin recuerda configurar bien los permisos para que solo tenga acceso el admin.
Publicado en tttony.blogspot.com
Publicar un comentario
3 comentarios:
Muy buen aporte.
Por otro lado, lo mas beneficioso seria guardarlo en una tabla así despues podes trabajar con ellos.
Saludos.
Muy bueno, la verdad es que me sirvio, muchisimo...tengo una pregunta: por ejemplo, lo que me interesa saber es de pagina viene el usuario, NO la url completa.
suponiendo que viene de www.miweb.com/Beta/index.php
con HTTP_REFERR obtengo: www.miweb.com/Beta/index.php
COn PHP_SELF obtengo: /Beta/index.php
Existe una manera de obtener solamente "index.php"???, si existe te agradeceria...hasta ahora uso una funcion asi:
$c= $_SERVER['PHP_SELF'];
$a=explode('/',$c);
$b=count($a);
$dedondeviene=$a[$b-1];
pero espero que haya algo mas simple.
Gracias!!!
Muchas gracias por este script
Publicar un comentario