Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Graphixx en 30 Diciembre 2010, 21:42 pm



Título: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 30 Diciembre 2010, 21:42 pm
El proyecto va asi:
http://www.sistemasycontroles.net/ip/

La idea es lograr algo asi:
http://live.feedjit.com/live/hackplayers.com/0/

Puedes descargar todos los archivos del proyecto aca:
graphixx_contador_de_visitas_php.zip (9.56 MB) (http://www.4shared.com/folder/Jnp1ZoKQ/ipproject.html)

Las bases de datos con las IP mundiales aca:
http://foro.elhacker.net/desarrollo_web/descarga_14_mil_dolares_en_bases_de_datos_del_proyecto_del_contador_php-t367571.0.html   

EL paquete incluye:
(http://img716.imageshack.us/img716/6872/graphixxcontadorvisitas.png)



La base de datos con los rangos ip de todo el mundo la saque de:
http://ipinfodb.com/ip_database.php
(http://img249.imageshack.us/img249/2627/bdipmundo2.png)
(http://img29.imageshack.us/img29/5926/bdipmundo3.png)
(http://img209.imageshack.us/img209/8209/bdipmundo4.png)

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. (http://foro.elhacker.net/desarrollo_web/espectaculares_banderas_de_todos_los_paises_en_gif-t314240.0.html)

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
  1. <?php
  2. include "conexiondb.php";
  3.  
  4. $ip = $_SERVER['REMOTE_ADDR']; $separar = explode('.',$ip);
  5. print("IP: $ip<br>");
  6. echo "1er rango: ".$separar[0]."<br>";
  7. echo "2do rango: ".$separar[1]."<br>";
  8. echo "3do rango: ".$separar[2]."<br>";
  9. echo "4to rango: ".$separar[3]."<br>";
  10.  
  11. list($a, $b, $c, $d) = $separar;
  12.  
  13. $ip2 =  (($a*256+$b)*256+$c)*256 + $d;
  14. echo "ip cifrada:".$ip2."<br>";
  15.  
  16. $connect=Conectarse();
  17. $ssql = "SELECT * FROM `ip_group_city` where `ip_start` <= '$ip2' order by ip_start desc limit 1";
  18. $consulta = mysql_query($ssql,$connect);
  19. mysql_close($connect);
  20.  
  21. if( mysql_num_rows($consulta) == 1) {
  22. $array = mysql_fetch_array($consulta);
  23. $_country_code = $array["country_code"];
  24. $_country_name = $array["country_name"];
  25. $_region_code = $array["region_code"];
  26. $_region_name = $array["region_name"];
  27. $_city = $array["city"];
  28. $_latitude = $array["latitude"];
  29. $_longitude = $array["longitude"];
  30.  
  31. echo "Codigo del Pais:".$_country_code."<br>";
  32. echo "Nombre del Pais:".$_country_name."<br>";
  33. echo "Codigo de region:".$_region_code."<br>";
  34. echo "Nombre de la Region:".$_region_name."<br>";
  35. echo "ciudad:".$_city."<br>";
  36. echo "latitud:".$_latitude."<br>";
  37. echo "longitud:".$_longitude."<br>";
  38. $lstring = strtolower($_country_code);
  39. echo "<img src=banderas_iso3166/".$lstring.".GIF border=0><br>";
  40.  
  41. mysql_free_result($consulta);
  42. //header( "Location: bienvenido.php" );
  43. } else {
  44. mysql_free_result($consulta);
  45. //header( "Location: portada.php" );
  46. }
  47.  
  48. $nav=$_SERVER['HTTP_USER_AGENT']; // guardo en la variable el Navegador
  49. echo "navegador: "."$nav"."<br>"; // muestro la variable con el Navegador
  50. ?>
  51. <?php
  52. //preg_match().
  53. 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";
  54. elseif(preg_match('/'."Firefox".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "FireFox";
  55. elseif(preg_match('/'."MSIE".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
  56. elseif(preg_match('/'."Chrome".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "Chrome";
  57. elseif(preg_match('/'."Lynx".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
  58. elseif(preg_match('/'."Opera".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
  59. elseif(preg_match('/'."WebTV".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "WebTV";
  60. elseif(preg_match('/'."Konqueror".'/', $_SERVER["HTTP_USER_AGENT"])) $browser = "Konqueror";
  61. 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";
  62. else $browser = "Other";
  63. echo "EL navegador es: ".$browser;
  64. ?>
  65. <center>
  66. <?php
  67. $url=$_SERVER['HTTP_REFERER'];
  68. echo '<strong>'."viene de(ruta completa): ".'</strong>'.$_SERVER['HTTP_REFERER'].'<br />';
  69.  
  70. preg_match( '@^(?:http://)?([^/]+)@i', $_SERVER['HTTP_REFERER'], $matches );
  71. $host = $matches[1];
  72.  
  73. echo '<strong>'."viene de(dominio): ".'</strong>'.$host;
  74. ?>
  75. </center>
  76. <center>
  77. <?php
  78. function get_search($referer)
  79. {
  80. preg_match("/q=(.*?)&/", $referer, $a);
  81. $b = urldecode(str_replace("+"," ", $a[1]));
  82. return $b;
  83. }
  84.  
  85.  
  86. if(stristr($_SERVER['HTTP_REFERER'],'google')){
  87. print '<strong>la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
  88. print ' <strong>te ha traido hasta este sitio.</strong>';
  89. }
  90. ?>
  91. </center>
  92. <?PHP
  93. // example of basic use
  94.  
  95. // set directory path to where the ip2countryphp.sql.php file is
  96. // this MUST be a relative path and MUST include the end slash /
  97. define("BASEDIR","./");
  98.  
  99. // set width of flag, height is proportional to width.
  100. $flag_width = "30";
  101.  
  102. // include the class file
  103. include(BASEDIR."ip2countryphp.sql.php");
  104.  
  105. /*
  106. Below is a heredoc example of how you might display the users info,
  107. of course you can include only the variables you want to, or you might
  108. want to store the ip address, 2 letter country code(for flag image) and
  109. country name in a database for using on a specific page.
  110. */
  111. $gifflag = "banderas/".$country_name.".GIF";
  112. print <<<TEST
  113. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  114. "http://www.w3.org/TR/html4/loose.dtd">
  115. <html>
  116. <head>
  117. <title>Visit Site Counter</title>
  118. </head>
  119. <body style="font:normal 9pt tahoma,arial,verdana">
  120. <table style="margin-top:20px;border:#CCCCCC 1px solid" width="320" cellspacing="2" cellpadding="3" border="0" align="center">
  121.   <tr><td bgcolor="#CCCCCC" colspan="2">&nbsp;<font color="white">Visit Site Counter</font></td></tr>
  122.   <tr><td width="200" height="26">Direccion IP:</td><td>$ip_address</td></tr>
  123.   <tr><td>Nombre del Pais:</td><td>$country_name</td></tr>
  124.   <tr><td>Codigo de 2 letras:</td><td>$two_letter_code</td></tr>
  125.   <tr><td>Codigo de 3 letras:</td><td>$three_letter_code</td></tr>
  126.   <tr><td>Bandera del Pais:</td><td><img src="$flag_img" width="$flag_width" border="0"></td></tr>
  127.   <tr><td>Bandera del Pais:</td><td><img src="$gifflag" border="0"></td></tr>
  128.   <tr><td bgcolor="#CCCCCC" colspan="2"><font color="white" size="1">www.eventosysistemas.com</font></td></tr>
  129. </table>
  130. </body>
  131. </html>
  132. TEST;
  133. ?>
  134.  

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

(http://www.web-max.ca/maps/demo.php?long=-63.10774861954596&lat=46.2899306519141)
(http://www.web-max.ca/PHP/inc/article_4.jpg)

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....?



Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: #!drvy en 31 Diciembre 2010, 16:58 pm
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
  1. <?php
  2. function get_search($referer)
  3. {
  4. preg_match("/q=(.*?)&/", $referer, $a);
  5. $b = str_replace("+"," ", $a[1]);
  6. return $b;
  7. }
  8.  
  9. if(stristr($_SERVER['HTTP_REFERER'],'google')){
  10. print '<strong>Bienvenido, la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
  11. print ' <strong>te ha traido hasta este sitio. Gracias por visitarme =).</strong>';
  12. }
  13. ?>
  14.  

Saludos


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 1 Enero 2011, 03:35 am
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
  1. <?php
  2.  
  3. function getIP() {
  4.    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  5.       $ips = $_SERVER['HTTP_X_FORWARDED_FOR'];
  6.    }  
  7.    elseif (isset($_SERVER['HTTP_VIA'])) {
  8.       $ips = $_SERVER['HTTP_VIA'];
  9.    }  
  10.    elseif (isset($_SERVER['REMOTE_ADDR'])) {
  11.       $ips = $_SERVER['REMOTE_ADDR'];
  12.    }
  13.    else {  
  14.       $ips = "unknown";
  15.    }
  16.  
  17.    echo "Tu IP es: $ips";
  18.  
  19. }
  20.  
  21. if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  22.       $ip1 = $_SERVER['HTTP_X_FORWARDED_FOR'];
  23.    }  
  24.    elseif (isset($_SERVER['HTTP_VIA'])) {
  25.       $ip1 = $_SERVER['HTTP_VIA'];
  26.    }  
  27.    elseif (isset($_SERVER['REMOTE_ADDR'])) {
  28.       $ip1 = $_SERVER['REMOTE_ADDR'];
  29.    }
  30.    else {  
  31.       $ip1 = "unknown";
  32.    }
  33. ?>

Se llama asi:
Código
  1. <?php
  2. getIP();
  3. ?>


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: #!drvy en 1 Enero 2011, 17:17 pm
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


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 4 Enero 2011, 22:41 pm
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
  1. <?php
  2. function get_search($referer)
  3. {
  4. preg_match("/q=(.*?)&/", $referer, $a);
  5. $b = str_replace("+"," ", $a[1]);
  6. return $b;
  7. }
  8.  
  9. if(stristr($_SERVER['HTTP_REFERER'],'google')){
  10. print '<strong>Bienvenido, la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
  11. print ' <strong>te ha traido hasta este sitio. Gracias por visitarme =).</strong>';
  12. }
  13. ?>
  14.  

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
  1. <?php
  2. function GoogleQuery ()
  3. {
  4.  
  5. //Comprobamos que la pagina referente pertenece a Google
  6. if (strpos ($_SERVER["HTTP_REFERER"], “google”))
  7. {
  8.  
  9. //Almacenamos en la variable $string el contenido de la variable $_SERVER["HTTP_REFERER"]
  10. $string = $_SERVER["HTTP_REFERER"];
  11.  
  12. //Inicialimamos a 0 el valor de la variable que nos indicara la longitud de la cadena contenida en la variable q.
  13. $longQuery = 0;
  14.  
  15. // — Encontramos la variable q y su final delimitado por &
  16. for ($i=0; $i < strlen ($string); $i++){
  17. if ($string[$i] == ‘q’)
  18. {
  19. for ($n=$i; $n < strlen ($string) ;$n++)
  20. {
  21. if ($string[$n] ==&)
  22. {
  23. // — 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]
  24. $q = substr ($string, $i+2, $longQuery-2);
  25. break;
  26. }
  27. $longQuery ++;
  28. }
  29. break;
  30.  
  31. }
  32.  
  33. }
  34.  
  35. //reemplazamos los símbolos + por espacios en blanco
  36. $q = str_replace(+,’ ‘,$q);
  37.  
  38. }
  39.  
  40. return $q;
  41.  
  42. }
  43.  
  44. //Mostramos el resultado haciendo una llamada a la función
  45. echo GoogleQuery ();
  46. ?>

ya probe esta funcion y retorna lo mismo  :rolleyes:


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 4 Enero 2011, 23:41 pm
Intente cuadrarlo asi:
Código
  1. <?php
  2. function get_search($referer)
  3. {
  4. preg_match("/q=(.*?)&/", $referer, $a);
  5. $b = str_replace("+"," ", $a[1]);
  6. $b = str_replace("%3A",":", $a[1]);
  7. $b = str_replace("%2F","/", $a[1]);
  8. return $b;
  9.  
  10. }
  11.  
  12. if(stristr($_SERVER['HTTP_REFERER'],'google')){
  13. print '<strong>Bienvenido, la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
  14. print ' <strong>te ha traido hasta este sitio. Gracias por visitarme =).</strong>';
  15. }
  16. ?>

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 ?


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: #!drvy en 5 Enero 2011, 16:14 pm
Hola, no tiene sentido usar un code tan largo para hacer lo mismo xD
Simplemente usa urldecode.

Algo asi:

Código
  1. <?php
  2. function get_search($referer)
  3. {
  4. preg_match("/q=(.*?)&/", $referer, $a);
  5. $b = urldecode(str_replace("+"," ", $a[1]));
  6. return $b;
  7. }
  8.  
  9.  
  10. if(stristr($_SERVER['HTTP_REFERER'],'google')){
  11. print '<strong>Bienvenido, la busqueda de:</strong> '.get_search($_SERVER['HTTP_REFERER']);
  12. print ' <strong>te ha traido hasta este sitio. Gracias por visitarme =).</strong>';
  13. }
  14. ?>
  15.  
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


Título: Re: Como usar todas las bases de datos de ip's del mundo desde un solo recurso.
Publicado por: Graphixx en 6 Enero 2011, 04:41 am
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


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 7 Enero 2011, 21:59 pm
Para identificar los navegadores:
Código
  1. <?php
  2. 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";
  3. elseif(ereg("Firefox", $_SERVER["HTTP_USER_AGENT"])) $browser = "FireFox";
  4. elseif(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
  5. elseif(ereg("Chrome", $_SERVER["HTTP_USER_AGENT"])) $browser = "Chrome";
  6. elseif(ereg("Lynx", $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
  7. elseif(ereg("Opera", $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
  8. elseif(ereg("WebTV", $_SERVER["HTTP_USER_AGENT"])) $browser = "WebTV";
  9. elseif(ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])) $browser = "Konqueror";
  10. 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";
  11. else $browser = "Other";
  12. echo "EL navegador es: ".$browser;
  13. ?>


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: ~ Yoya ~ en 8 Enero 2011, 21:42 pm
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() (http://www.php.net/manual/es/function.preg-match.php).

Saludos.


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 10 Enero 2011, 05:58 am
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 (http://www.megaupload.com/?d=MIADL9EF)   

EL paquete incluye:
(http://img716.imageshack.us/img716/6872/graphixxcontadorvisitas.png)


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: ~ Yoya ~ en 10 Enero 2011, 23:18 pm
Tienes algunas vulnerabilidades y Bug
Código
  1. $a = $separar[0];
  2. $b = $separar[1];
  3. $c = $separar[2];
  4. $d = $separar[3];

Mejor usa la función list() (http://www.php.net/manual/es/function.list.php).
Que seria:
Código
  1. list($a, $b, $c, $d) = $separar;


Código
  1. $nav=$_SERVER['HTTP_USER_AGENT']; // guardo en la variable el Navegador
  2. 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
  1. echo '<strong>'."viene de(ruta completa): ".'</strong>'.$_SERVER['HTTP_REFERER'].'<br />';

Se puede causar XSS mediante el referer...

Código
  1. <?php
  2. 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";
  3. elseif(ereg("Firefox", $_SERVER["HTTP_USER_AGENT"])) $browser = "FireFox";
  4. elseif(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
  5. elseif(ereg("Chrome", $_SERVER["HTTP_USER_AGENT"])) $browser = "Chrome";
  6. elseif(ereg("Lynx", $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
  7. elseif(ereg("Opera", $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
  8. elseif(ereg("WebTV", $_SERVER["HTTP_USER_AGENT"])) $browser = "WebTV";
  9. elseif(ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])) $browser = "Konqueror";
  10. 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";
  11. else $browser = "Other";
  12. echo "EL navegador es: ".$browser;
  13.  
  14. ?>

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


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 23 Abril 2011, 21:08 pm
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
  1.    ## Seguridad extra para PHP  
  2.    php_flag safe_mode on  
  3.    php_flag expose_php off  
  4.    php_flag display_errors off  
  5.  
  6.    ## Manejo de errores de Apache. Cuando se produzca uno de estos errores, redirigimos a una pagina especial desarrollada por nosotros.  
  7.    ErrorDocument 401 /error401.html  
  8.    ErrorDocument 403 /error403.html  
  9.    ErrorDocument 404 /error404.html  
  10.  
  11.  
  12.    RewriteEngine On  
  13.  
  14.    Options +FollowSymLinks  
  15.    # Evitar escaneos y cualquier intento de manipulación malintencionada  
  16.    # de la URL. Con esta regla es imposible lanzar ataques de inyección (SQL, XSS, etc)  
  17.    RewriteCond %{HTTP_USER_AGENT} ^$ [OR]  
  18.    RewriteCond %{HTTP_USER_AGENT} ^(-|\.|') [OR]  
  19.    RewriteCond %{HTTP_USER_AGENT} ^(.*)(<|>|%3C|%3E)(.*) [NC,OR]  
  20.    RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget)(.*) [NC,OR]  
  21.    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]  
  22.  
  23.    RewriteCond %{REQUEST_URI} ^(/,|/;|/<|/>|/'|/`|/%2C|/%3C|/%3E|/%27|/////) [NC,OR]  
  24.    RewriteCond %{HTTP_REFERER} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|<|>|'|%3C|%3E|%26%23|%27|%60)(.*) [NC,OR]  
  25.    RewriteCond %{QUERY_STRING} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|%3C|%3E|%27|%26%23|%60)(.*) [NC,OR]  
  26.    RewriteCond %{QUERY_STRING} ^(.*)('|-|<|>|,|/|\\|\.a|\.c|\.t|\.d|\.p|\.i|\.e|\.j)(.*) [NC,OR]  
  27.    RewriteCond %{HTTP_COOKIE} ^(.*)(<|>|'|%3C|%3E|%27)(.*) [NC]  
  28.  
  29.    RewriteRule ^(.*)$ error.php [NC]  
  30.    ## No permitir acceso al .htaccess  
  31.    order allow,deny  
  32.    deny from all  
  33.  
  34.    ## Evitar que se liste el contenido de los directorios  
  35.    Options All -Indexes  
  36.  
  37.    ## Lo mismo que lo anterior  
  38.    IndexIgnore *  
  39.  
  40.    ## Denegar el acceso a robots dañinos, browsers offline, etc  
  41.    RewriteBase /  
  42.    RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]  
  43.    RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]  
  44.    RewriteCond %{HTTP_USER_AGENT} ^attach [OR]  
  45.    RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]  
  46.    RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]  
  47.    RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]  
  48.    RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]  
  49.    RewriteCond %{HTTP_USER_AGENT} ^Zeus  
  50.    ##redireccionar a los robots a otra web  
  51.    RewriteRule ^.*$ http://www.otraweb.com [R,L]  
  52.  
  53.    # Protegerse contra los ataques DOS limitando el tamaño de subida de archivos  
  54.    LimitRequestBody 10240000  
  55.  
  56.    #Evitar lectura con cURL
  57.    php_flag  allow_url_fopen  off
  58.  

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  


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 23 Abril 2011, 23:34 pm
le he agregado los iconos de los navegadores y sistemas operativos:
(http://fc00.deviantart.net/fs38/i/2008/344/2/0/Black_OS___icon_by_webshit.png)
(http://fc06.deviantart.net/fs40/i/2009/021/1/f/Black_Browser_Icons_by_webshit.png)

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


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: merolhack en 25 Abril 2011, 15:41 pm
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/


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 26 Abril 2011, 00:07 am
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/

Pero ese de esa web http://www.seomoz.org/ip2loc, no veo que diga por ningun lado donde descargar el codigo que estan utilizando, ni que nos expliquen como funciona, ni que digan de donde obtuvieron las bases de datos de las ip. el que yo estoy proponiendo es un proyecto libre, de codigo abierto y de comunidad.

Y lo de las google maps api, es lo mismo es una API, no un codigo abierto.


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: merolhack en 26 Abril 2011, 00:42 am
jaja solo es un ejemplo de todos los scripts y clases que puedes encontrar en internet, solo es cosa de que busques bien.

Como esta que tiene licencia GPL:
http://code.google.com/p/php-google-map-api/

Es cosa de aprender a usar la API de Google Maps:
http://code.google.com/intl/es-ES/apis/maps/index.html

No todo el software es libre, ni todo tiene la misma licencia, hay gratuitos y/o libres.


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 27 Abril 2011, 05:59 am
yo estoy buscando hacer algo asi como el globo de revolver maps. convinado con el de 99counters...
http://es.99counters.com/ - http://revolvermaps.com/  ;D , si sabes de alguna libreria que me permita editar una imagen en php con coordenadas, para ser mas precisos ponerle los puntos rojos que ponen los de revolvermaps sobre el mapa. me caeria de pelos. haber si por fin, en internet, liberamos el code de un contador de visitas decente.


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 3 Junio 2011, 00:28 am
Añadido al proyecto la libreria para dibujar en un mapa global las visitas:
http://www.web-max.ca/PHP/article_1.php

(http://www.web-max.ca/maps/demo.php?long=-63.10774861954596&lat=46.2899306519141)

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


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Shell Root en 3 Junio 2011, 00:45 am
Dice que estoy en la ciudad de bello, cuando no lo es. XD, además no es una ciudad sino un municipio. jojojojo
http://es.wikipedia.org/wiki/Bello_(Antioquia) (http://es.wikipedia.org/wiki/Bello_(Antioquia))


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 3 Junio 2011, 00:53 am
Dice que estoy en la ciudad de bello, cuando no lo es. XD, además no es una ciudad sino un municipio. jojojojo
http://es.wikipedia.org/wiki/Bello_(Antioquia) (http://es.wikipedia.org/wiki/Bello_(Antioquia))

Jeje Paisano.... ya mismo me pongo a separar de la base de datos de mas de 4 millones de ciudades, cuales son municipios, jejejejjeje.


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Shell Root en 3 Junio 2011, 01:16 am
Hay algunos scripts, creados....  :rolleyes:


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Cicklow en 7 Junio 2011, 08:07 am
En ves de tener una gran BD podrias usar: http://geolite.maxmind.com/download/geoip/api/php/

Y listo tendrias menos archivos y sin tanta carga en el mysql.

Saludos


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: otromas en 4 Marzo 2012, 20:21 pm
Hola, buenas tardes. Buenísimo proyecto, felicidades :).
Sólo indicar, que los archivos del proyecto ya no están disponibles ya que estaban alojados en megaupload.
Si el autor y/o colaboradores pudieran resubirlos sería perfecto.
Muchas gracias de antemano.
Saludos.


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 5 Marzo 2012, 22:47 pm
Estimado compañero otromas,

lo he resubido a 4shared, eso si como el limite de carga de archivos es de 2mb aya, me toco partir el projecto en 6 partes de 2mb cada una:
http://www.4shared.com/folder/Jnp1ZoKQ/ipproject.html


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: otromas en 6 Marzo 2012, 03:02 am
Hola, buenas noches.
Muchas gracias por haberlo resubido Graphixx y disculpa por las molestias de haberlo tenido que partir :).

Saludos  :D


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Diabliyo en 6 Marzo 2012, 17:22 pm
Graphixx creo que tu geolocalizador de IPs no funciona como debe, detecta mal la ubicacion del IP, y esto mas que nada por la Base de Datos de IPs-->Region que estas usando, te aconsejo usar mejor GeoIP, mira mi implementacion: http://www.sie-group.net/get_info.php (http://www.sie-group.net/get_info.php).

GeoIP es mas exacto, ademas es un proyecto que se sigue actualizando....

Saludos !


Título: Re: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: Graphixx en 26 Marzo 2013, 17:38 pm
Ya volvi a subir las bases de datos con las IP mundiales, a dropbox, ya que el respositorio estaba en megaupload:
http://foro.elhacker.net/desarrollo_web/descarga_14_mil_dolares_en_bases_de_datos_del_proyecto_del_contador_php-t367571.0.html