elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:54  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts  (Leído 5,415 veces)
Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
"Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« en: 30 Diciembre 2010, 21:42 »

El proyecto va asi:
http://www.sistemasycontroles.net/ip/

Puedes descargar todos los archivos del proyecto aca:
graphixx_contador_de_visitas_php.zip (9.56 MB)   

EL paquete incluye:




La base de datos con los rangos ip de todo el mundo la saque de:
http://ipinfodb.com/ip_database.php




Descargar la base de datos de ip mundiales de:
http://www.megaupload.com/?d=NJZHXD5S

Aqui tambien estan compiladas como usar todas las bd gratis que hay en un solo recurso:
http://bakery.cakephp.org/spa/articles/dereklio/2010/10/11/geoip_de_origen_de_datos_collection_-_maxmind_wipmania_ipinfodb_-_muchos_proveedores_geoip_para_usted_para_elegir

las banderas animadas estan en:
Espectaculares Banderas de todos los paises en GIF.

Por implementar:
La idea es implementar una tabla de estadisticas como esta:
http://live.feedjit.com/live/coltandecolombia.com/0/

Para implementarle tambien un globo 3d tipo revolver maps, gracias a que la base de datos entrega las coordenadas cartesianas, asi:
http://www.revolvermaps.com/?target=enlarge&i=yaZ8Wt55df&wid=1&nostars=true&color=ff0000&m=2&ref=http%3A%2F%2Fwww.sistemasycontroles.net%2F

El codigo hasta el momento va:
Código
<?php
include "conexiondb.php";
 
$ip = $_SERVER['REMOTE_ADDR']; $separar = explode('.',$ip);
print("IP: $ip<br>");
echo "1er rango: ".$separar[0]."<br>";
echo "2do rango: ".$separar[1]."<br>";
echo "3do rango: ".$separar[2]."<br>";
echo "4to rango: ".$separar[3]."<br>";
 
list($a, $b, $c, $d) = $separar;
 
$ip2 =  (($a*256+$b)*256+$c)*256 + $d;
echo "ip cifrada:".$ip2."<br>";
 
$connect=Conectarse();
$ssql = "SELECT * FROM `ip_group_city` where `ip_start` <= '$ip2' order by ip_start desc limit 1";
$consulta = mysql_query($ssql,$connect);
mysql_close($connect);
 
if( mysql_num_rows($consulta) == 1) {
$array = mysql_fetch_array($consulta);
$_country_code = $array["country_code"];
$_country_name = $array["country_name"];
$_region_code = $array["region_code"];
$_region_name = $array["region_name"];
$_city = $array["city"];
$_latitude = $array["latitude"];
$_longitude = $array["longitude"];
 
echo "Codigo del Pais:".$_country_code."<br>";
echo "Nombre del Pais:".$_country_name."<br>";
echo "Codigo de region:".$_region_code."<br>";
echo "Nombre de la Region:".$_region_name."<br>";
echo "ciudad:".$_city."<br>";
echo "latitud:".$_latitude."<br>";
echo "longitud:".$_longitude."<br>";
$lstring = strtolower($_country_code);
echo "<img src=banderas_iso3166/".$lstring.".GIF border=0><br>";
 
mysql_free_result($consulta);
//header( "Location: bienvenido.php" );
} else {
mysql_free_result($consulta);
//header( "Location: portada.php" );
}
 
$nav=$_SERVER['HTTP_USER_AGENT']; // guardo en la variable el Navegador
echo "navegador: "."$nav"."<br>"; // muestro la variable con el Navegador
?>
<?php
//preg_match().
if ((preg_match('/'."Nav".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."Gold".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."X11".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."Mozilla".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."Netscape".'/', $_SERVER["HTTP_USER_AGENT"])) AND (!preg_match('/'."MSIE".'/', $_SERVER["HTTP_USER_AGENT"])) AND (!preg_match('/'."Chrome".'/', $_SERVER["HTTP_USER_AGENT"])) AND (!preg_match('/'."Konqueror".'/', $_SERVER["HTTP_USER_AGENT"])) AND (!preg_match('/'."Firefox".'/', $_SERVER["HTTP_USER_AGENT"]))) $browser = "Netscape";
elseif(preg_match('/'."Firefox".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "FireFox";
elseif(preg_match('/'."MSIE".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
elseif(preg_match('/'."Chrome".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "Chrome";
elseif(preg_match('/'."Lynx".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
elseif(preg_match('/'."Opera".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
elseif(preg_match('/'."WebTV".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "WebTV";
elseif(preg_match('/'."Konqueror".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "Konqueror";
elseif((preg_match('/'."bot".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."Google".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."Slurp".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."Scooter".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."Spider".'/', $_SERVER["HTTP_USER_AGENT"])) || (preg_match('/'."Infoseek".'/', $_SERVER["HTTP_USER_AGENT"]))) $browser = "Bot";
else $browser = "Other";
echo "EL navegador es: ".$browser;
?>
<center>
<?php
$url=$_SERVER['HTTP_REFERER'];
echo '<strong>'."viene de(ruta completa): ".'</strong>'.$_SERVER['HTTP_REFERER'].'<br />';
 
preg_match( '@^(?:http://)?([^/]+)@i', $_SERVER['HTTP_REFERER'], $matches );
$host = $matches[1];
 
echo '<strong>'."viene de(dominio): ".'</strong>'.$host;
?>
</center>
<center>
<?php
function get_search($referer)
{
preg_match("/q=(.*?)&/", $referer, $a);
$b = urldecode(str_replace("+"," ", $a[1]));
return $b;
}
 
 
if(stristr($_SERVER['HTTP_REFERER'],'google')){
print '<strong>la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
print ' <strong>te ha traido hasta este sitio.</strong>';
}
?>
</center>
<?PHP
// example of basic use
 
// set directory path to where the ip2countryphp.sql.php file is
// this MUST be a relative path and MUST include the end slash /
define("BASEDIR","./");
 
// set width of flag, height is proportional to width.
$flag_width = "30";
 
// include the class file
include(BASEDIR."ip2countryphp.sql.php");
 
/*
Below is a heredoc example of how you might display the users info,
of course you can include only the variables you want to, or you might
want to store the ip address, 2 letter country code(for flag image) and
country name in a database for using on a specific page.
*/

$gifflag = "banderas/".$country_name.".GIF";
print <<<TEST
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Visit Site Counter</title>
</head>
<body style="font:normal 9pt tahoma,arial,verdana">
<table style="margin-top:20px;border:#CCCCCC 1px solid" width="320" cellspacing="2" cellpadding="3" border="0" align="center">
 <tr><td bgcolor="#CCCCCC" colspan="2">&nbsp;<font color="white">Visit Site Counter</font></td></tr>
 <tr><td width="200" height="26">Direccion IP:</td><td>$ip_address</td></tr>
 <tr><td>Nombre del Pais:</td><td>$country_name</td></tr>
 <tr><td>Codigo de 2 letras:</td><td>$two_letter_code</td></tr>
 <tr><td>Codigo de 3 letras:</td><td>$three_letter_code</td></tr>
 <tr><td>Bandera del Pais:</td><td><img src="$flag_img" width="$flag_width" border="0"></td></tr>
 <tr><td>Bandera del Pais:</td><td><img src="$gifflag" border="0"></td></tr>
 <tr><td bgcolor="#CCCCCC" colspan="2"><font color="white" size="1">www.eventosysistemas.com</font></td></tr>
</table>
</body>
</html>
TEST
;
exit;
?>
 

Añadido al proyecto la libreria para dibujar en un mapa global las visitas:
GIS mapping in PHP: Part 1
Plotting a longitude / latitude coordinate on a raster map of the world using PHP and GD.
http://www.web-max.ca/PHP/article_1.php
GIS mapping in PHP: Part 2
Loading vector data in from a Mapinfo MIF file and displaying it in an image using PHP and GD.
http://www.web-max.ca/PHP/article_2.php
GIS mapping in PHP: Part 3
Retrieving user selected longitude and latitude coordinates from a raster map of the world.
http://www.web-max.ca/PHP/article_3.php
GIS mapping in PHP: Part 4
Stepping back in time, we show how to plot more than one point on a raster map of the world, loading data from a simple text file.
http://www.web-max.ca/PHP/article_4.php




proyecto logrado gracias a:
http://en.wikipedia.org/wiki/Mercator_projection

Para tornar el mapa 3d usar:
http://www.uff.br/mapprojections/Mercator_en.html


Pido ayuda con esto:

COdigo del referer:
Código:
<?php
$url=$_SERVER['HTTP_REFERER'];
echo '<strong>'."viene de(ruta completa): ".'</strong>'.$_SERVER['HTTP_REFERER'].'<br />';

preg_match( '@^(?:http://)?([^/]+)@i', $_SERVER['HTTP_REFERER'], $matches );
$host = $matches[1];

echo '<strong>'."viene de(dominio): ".'</strong>'.$host;
?>
Alguien sabe como optener hacia que pagina parte el usuario?, el contrario de HTTP_REFERER....?



« Última modificación: 5 Marzo 2012, 22:47 por Graphixx » En línea

drvy | BSM


Desconectado Desconectado

Mensajes: 1.129


badstupidmonkey


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #1 en: 31 Diciembre 2010, 16:58 »

Lo primero no lo veo posible a no ser que el propio link hacia el que va a partir el usuario no este indicado en tu propia pagina.

Lo segundo,  segun he entendido queres saber lo que buscaba el usuario mediante el referer o algo asi no ?

seria parecido a esto:
Código
<?php
function get_search($referer)
{
preg_match("/q=(.*?)&/", $referer, $a);
$b = str_replace("+"," ", $a[1]);
return $b;
}
 
if(stristr($_SERVER['HTTP_REFERER'],'google')){
print '<strong>Bienvenido, la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
print ' <strong>te ha traido hasta este sitio. Gracias por visitarme =).</strong>';
}
?>
 

Saludos


En línea
Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #2 en: 1 Enero 2011, 03:35 »

Gracias drvy | BSM justo lo que andaba buscando e Incluire para optener la ip una funcion que posteo el compañero cuántico:
Código
<?php 
 
function getIP() {
   if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $ips = $_SERVER['HTTP_X_FORWARDED_FOR'];
   }  
   elseif (isset($_SERVER['HTTP_VIA'])) {
      $ips = $_SERVER['HTTP_VIA'];
   }  
   elseif (isset($_SERVER['REMOTE_ADDR'])) {
      $ips = $_SERVER['REMOTE_ADDR'];
   }
   else {  
      $ips = "unknown";
   }
 
   echo "Tu IP es: $ips";
 
}
 
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $ip1 = $_SERVER['HTTP_X_FORWARDED_FOR'];
   }  
   elseif (isset($_SERVER['HTTP_VIA'])) {
      $ip1 = $_SERVER['HTTP_VIA'];
   }  
   elseif (isset($_SERVER['REMOTE_ADDR'])) {
      $ip1 = $_SERVER['REMOTE_ADDR'];
   }
   else {  
      $ip1 = "unknown";
   }
?>

Se llama asi:
Código
<?php
getIP();
?>
En línea

drvy | BSM


Desconectado Desconectado

Mensajes: 1.129


badstupidmonkey


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #3 en: 1 Enero 2011, 17:17 »

Hola =)
No te recomiendo usar HTTP_X_FORWARDED_FOR. Pues serviría para obtener el proxy (al igual que HTTP_VIA) ( en caso de que el cliente use tal) pero es fácilmente modificable mediante los headers del navegador.

En todo caso usar únicamente REMOTE_ADDR te bastaría a no ser que quieras comprobar si el cliente usa proxy y en tal caso indicarlo.



Saludos
En línea
Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #4 en: 4 Enero 2011, 22:41 »

Lo primero no lo veo posible a no ser que el propio link hacia el que va a partir el usuario no este indicado en tu propia pagina.

Lo segundo,  segun he entendido queres saber lo que buscaba el usuario mediante el referer o algo asi no ?

seria parecido a esto:
Código
<?php
function get_search($referer)
{
preg_match("/q=(.*?)&/", $referer, $a);
$b = str_replace("+"," ", $a[1]);
return $b;
}
 
if(stristr($_SERVER['HTTP_REFERER'],'google')){
print '<strong>Bienvenido, la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
print ' <strong>te ha traido hasta este sitio. Gracias por visitarme =).</strong>';
}
?>
 

Saludos

COmpa mira lo que me devuelve el code que posteaste:
Bienvenido, la busqueda de: http%3A%2F%2Fsistemasycontroles.net%2Fip te ha traido hasta este sitio. Gracias por visitarme =).

los : salen como "%3" y el / sencillo como "%2F"

Para lo de las palabras claves de busqueda en google con las que llegaron a la web, creo y va ser mejor usar:
http://www.phpclasses.org/package/4383-PHP-Extract-keywords-used-to-search-in-the-site-Google.html

Código
<?php
function GoogleQuery ()
{
 
//Comprobamos que la pagina referente pertenece a Google
if (strpos ($_SERVER["HTTP_REFERER"], “google”))
{
 
//Almacenamos en la variable $string el contenido de la variable $_SERVER["HTTP_REFERER"]
$string = $_SERVER["HTTP_REFERER"];
 
//Inicialimamos a 0 el valor de la variable que nos indicara la longitud de la cadena contenida en la variable q.
$longQuery = 0;
 
// — Encontramos la variable q y su final delimitado por &
for ($i=0; $i < strlen ($string); $i++){
if ($string[$i] == ‘q’)
{
for ($n=$i; $n < strlen ($string) ;$n++)
{
if ($string[$n] ==&)
{
// — Extraemos la subcadena a partir de las posiciones de (inicio)$i+2 [excluimos 'q='] y (fin)$n-2 [adelantamos 2 posiciones el final de la cadena resultante]
$q = substr ($string, $i+2, $longQuery-2);
break;
}
$longQuery ++;
}
break;
 
}
 
}
 
//reemplazamos los símbolos + por espacios en blanco
$q = str_replace(+,’ ‘,$q);
 
}
 
return $q;
 
}
 
//Mostramos el resultado haciendo una llamada a la función
echo GoogleQuery ();
?>

ya probe esta funcion y retorna lo mismo  :rolleyes:
« Última modificación: 4 Enero 2011, 23:37 por Graphixx » En línea

Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #5 en: 4 Enero 2011, 23:41 »

Intente cuadrarlo asi:
Código
<?php
function get_search($referer)
{
preg_match("/q=(.*?)&/", $referer, $a);
$b = str_replace("+"," ", $a[1]);
$b = str_replace("%3A",":", $a[1]);
$b = str_replace("%2F","/", $a[1]);
return $b;
 
}
 
if(stristr($_SERVER['HTTP_REFERER'],'google')){
print '<strong>Bienvenido, la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
print ' <strong>te ha traido hasta este sitio. Gracias por visitarme =).</strong>';
}
?>

pero me mostro:
Bienvenido, la busqueda de: http%3A//www.sistemasycontroles.net/ip te ha traido hasta este sitio. Gracias por visitarme =).

No tomo el $b = str_replace("%3A",":", $a[1]); , Alguien sabe por que ?
En línea

drvy | BSM


Desconectado Desconectado

Mensajes: 1.129


badstupidmonkey


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #6 en: 5 Enero 2011, 16:14 »

Hola, no tiene sentido usar un code tan largo para hacer lo mismo xD
Simplemente usa urldecode.

Algo asi:

Código
<?php
function get_search($referer)
{
preg_match("/q=(.*?)&/", $referer, $a);
$b = urldecode(str_replace("+"," ", $a[1]));
return $b;
}
 
 
if(stristr($_SERVER['HTTP_REFERER'],'google')){
print '<strong>Bienvenido, la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
print ' <strong>te ha traido hasta este sitio. Gracias por visitarme =).</strong>';
}
?>
 
con lo que la busqueda de:
Código:
http://www.google.com/search?hl=en&source=hp&biw=1280&bih=923&q=http%3A%2F%2Fsistemasycontroles.net%2Fip&btnG=Google+Search&aq=f&aqi=m1&aql=&oq=&gs_rfai=

te daria:
Código:
Bienvenido, la busqueda de: http://sistemasycontroles.net/ te ha traido hasta este sitio. Gracias por visitarme =).


Saludos
« Última modificación: 5 Enero 2011, 16:18 por drvy | BSM » En línea
Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
Re: Como usar todas las bases de datos de ip's del mundo desde un solo recurso.
« Respuesta #7 en: 6 Enero 2011, 04:41 »

Encontre como usar todas las bases de datos de ip's del mundo desde un solo recurso:
http://bakery.cakephp.org/spa/articles/dereklio/2010/10/11/geoip_de_origen_de_datos_collection_-_maxmind_wipmania_ipinfodb_-_muchos_proveedores_geoip_para_usted_para_elegir
En línea

Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #8 en: 7 Enero 2011, 21:59 »

Para identificar los navegadores:
Código
<?php
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("Chrome", $_SERVER["HTTP_USER_AGENT"])) AND (!ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])) AND (!ereg("Firefox", $_SERVER["HTTP_USER_AGENT"]))) $browser = "Netscape";
elseif(ereg("Firefox", $_SERVER["HTTP_USER_AGENT"])) $browser = "FireFox";
elseif(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
elseif(ereg("Chrome", $_SERVER["HTTP_USER_AGENT"])) $browser = "Chrome";
elseif(ereg("Lynx", $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
elseif(ereg("Opera", $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
elseif(ereg("WebTV", $_SERVER["HTTP_USER_AGENT"])) $browser = "WebTV";
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";
echo "EL navegador es: ".$browser;
?>
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #9 en: 8 Enero 2011, 21:42 »

Te recomiendo que no uses la función ereg() ya que esta obsoleta desde la versión 5.3.0 de PHP, si migras o actualiza a una version actual, ya sea por seguridad o otro motivo y usas ereg, te dara errores. Ocupa preg_match().

Saludos.
En línea

Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #10 en: 10 Enero 2011, 05:58 »

Actualizado, con paquete con todos los archivos del proyecto:

Puedes descargar todos los archivos del proyecto aca:
graphixx_contador_de_visitas_php.zip (10 MB)
http://www.megaupload.com/?d=MIADL9EF   

EL paquete incluye:
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #11 en: 10 Enero 2011, 23:18 »

Tienes algunas vulnerabilidades y Bug
Código
$a = $separar[0];
$b = $separar[1];
$c = $separar[2];
$d = $separar[3];

Mejor usa la función list().
Que seria:
Código
list($a, $b, $c, $d) = $separar;


Código
$nav=$_SERVER['HTTP_USER_AGENT']; // guardo en la variable el Navegador
echo "navegador: "."$nav"."<br>"; // muestro la variable con el Navegador

Se puede causar XSS mediante el user agent, aunque no es serio pero es XSS

Código
echo '<strong>'."viene de(ruta completa): ".'</strong>'.$_SERVER['HTTP_REFERER'].'<br />';

Se puede causar XSS mediante el referer...

Código
<?php
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("Chrome", $_SERVER["HTTP_USER_AGENT"])) AND (!ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])) AND (!ereg("Firefox", $_SERVER["HTTP_USER_AGENT"]))) $browser = "Netscape";
elseif(ereg("Firefox", $_SERVER["HTTP_USER_AGENT"])) $browser = "FireFox";
elseif(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
elseif(ereg("Chrome", $_SERVER["HTTP_USER_AGENT"])) $browser = "Chrome";
elseif(ereg("Lynx", $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
elseif(ereg("Opera", $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
elseif(ereg("WebTV", $_SERVER["HTTP_USER_AGENT"])) $browser = "WebTV";
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";
echo "EL navegador es: ".$browser;
 
?>

Salida:
Código:
Deprecated: Function ereg() is deprecated in /var/www/html/pruebas.php on line 2 Deprecated: Function ereg() is deprecated in /var/www/html/pruebas.php on line 2 Deprecated: Function ereg() is deprecated in /var/www/html/pruebas.php on line 2 Deprecated: Function ereg() is deprecated in /var/www/html/pruebas.php on line 2 Deprecated: Function ereg() is deprecated in /var/www/html/pruebas.php on line 2 Deprecated: Function ereg() is deprecated in /var/www/html/pruebas.php on line 3 Deprecated: Function ereg() is deprecated in /var/www/html/pruebas.php on line 4 Deprecated: Function ereg() is deprecated in /var/www/html/pruebas.php on line 5 EL navegador es: Chrome

Bug, te dije que no uses ereg...



El nombre del servidor, password y nombre de la base de datos MYSQL, guárdalo en variables, array, etc... Asi no se tiene que insertar en diferentes archivos, ahorra tiempo.


De momento no llegue a instalarlo xD
En línea

Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #12 en: 23 Abril 2011, 21:08 »

Muchas gracias ~ Yoya ~ por tus sugerencias ya las implemente todas en el codigo.

Solo me queda una duda,me pregunto si agregando esto a mi archivo .htaccess, me protegeria del XSS que mencionaste con el HTTP_USER_AGENT.
Código
    ## Seguridad extra para PHP  
   php_flag safe_mode on  
   php_flag expose_php off  
   php_flag display_errors off  
 
   ## Manejo de errores de Apache. Cuando se produzca uno de estos errores, redirigimos a una pagina especial desarrollada por nosotros.  
   ErrorDocument 401 /error401.html  
   ErrorDocument 403 /error403.html  
   ErrorDocument 404 /error404.html  
 
 
   RewriteEngine On  
 
   Options +FollowSymLinks  
   # Evitar escaneos y cualquier intento de manipulación malintencionada  
   # de la URL. Con esta regla es imposible lanzar ataques de inyección (SQL, XSS, etc)  
   RewriteCond %{HTTP_USER_AGENT} ^$ [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^(-|\.|') [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^(.*)(<|>|%3C|%3E)(.*) [NC,OR]  
   RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget)(.*) [NC,OR]  
   RewriteCond %{HTTP_USER_AGENT} ^(.*)(libwww-perl|libwwwperl|snoopy|curl|wget|winhttp|python|nikto|scan|clshttp|archiver|loader|email|harvest|fetch|extract|grab|miner|suck|reaper|leach)(.*) [NC,OR]  
 
   RewriteCond %{REQUEST_URI} ^(/,|/;|/<|/>|/'|/`|/%2C|/%3C|/%3E|/%27|/////) [NC,OR]  
   RewriteCond %{HTTP_REFERER} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|<|>|'|%3C|%3E|%26%23|%27|%60)(.*) [NC,OR]  
   RewriteCond %{QUERY_STRING} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|%3C|%3E|%27|%26%23|%60)(.*) [NC,OR]  
   RewriteCond %{QUERY_STRING} ^(.*)('|-|<|>|,|/|\\|\.a|\.c|\.t|\.d|\.p|\.i|\.e|\.j)(.*) [NC,OR]  
   RewriteCond %{HTTP_COOKIE} ^(.*)(<|>|'|%3C|%3E|%27)(.*) [NC]  
 
   RewriteRule ^(.*)$ error.php [NC]  
   ## No permitir acceso al .htaccess  
   order allow,deny  
   deny from all  
 
   ## Evitar que se liste el contenido de los directorios  
   Options All -Indexes  
 
   ## Lo mismo que lo anterior  
   IndexIgnore *  
 
   ## Denegar el acceso a robots dañinos, browsers offline, etc  
   RewriteBase /  
   RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^attach [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]  
   RewriteCond %{HTTP_USER_AGENT} ^Zeus  
   ##redireccionar a los robots a otra web  
   RewriteRule ^.*$ http://www.otraweb.com [R,L]  
 
   # Protegerse contra los ataques DOS limitando el tamaño de subida de archivos  
   LimitRequestBody 10240000  
 
   #Evitar lectura con cURL
   php_flag  allow_url_fopen  off
 

Con este codigo sale el error siempre:
Código:
Forbidden

You don't have permission to access /ip/ on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Me toco comentar las siguientes lineas, lo que no se si deje inutilizado el codigo de proteccion:
Código:
   RewriteRule ^(.*)$ error.php [NC]  
    ## No permitir acceso al .htaccess  
    ##order allow,deny  
    ##deny from all  
« Última modificación: 23 Abril 2011, 21:51 por Graphixx » En línea

Graphixx


Conectado Conectado

Mensajes: 576


Webmaster (PHP)


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #13 en: 23 Abril 2011, 23:34 »

le he agregado los iconos de los navegadores y sistemas operativos:



Aparte estoy trabajando en como insertar a cada registro de la visita un icono de donde venia, usando para ello la funcion api de google para favicons:
http://www.google.com/s2/favicons?domain=foro.elhacker.net
« Última modificación: 23 Abril 2011, 23:53 por Graphixx » En línea

merolhack

Desconectado Desconectado

Mensajes: 277

Me encanta Joomla y lo que puedo hacer con el


Ver Perfil WWW
Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
« Respuesta #14 en: 25 Abril 2011, 15:41 »

Pues esto ya existe usando el API de Google Maps, algo como esto:
http://www.seomoz.org/ip2loc

Pero usando bien la API se pueden obtener muchas más datos!

Aqui hay otra clase:
http://www.el33.es/2008/07/01/clase-para-geolocalizar-la-ip-en-php-google-maps-api/
En línea

PHP Web Developer
Joomla, jQuery, MySQL, CSS, etc...

Android APP Developer http://android-dev.tumblr.com/
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines