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:
<?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"> <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
(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:
<?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....?
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:
<?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
Gracias drvy | BSM justo lo que andaba buscando e Incluire para optener la ip una funcion que posteo el compañero cuántico:
<?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:
<?php
getIP();
?>
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
Cita de: drvy | BSM 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:
<?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
<?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:
Intente cuadrarlo asi:
<?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 ?
Hola, no tiene sentido usar un code tan largo para hacer lo mismo xD
Simplemente usa urldecode.
Algo asi:
<?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:
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:
Bienvenido, la busqueda de: http://sistemasycontroles.net/ te ha traido hasta este sitio. Gracias por visitarme =).
Saludos
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
Para identificar los navegadores:
<?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;
?>
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.
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)
Tienes algunas vulnerabilidades y Bug
$a = $separar[0];
$b = $separar[1];
$c = $separar[2];
$d = $separar[3];
Mejor usa la función list() (http://www.php.net/manual/es/function.list.php).
Que seria:
list($a, $b, $c, $d) = $separar;
$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
echo '<strong>'."viene de(ruta completa): ".'</strong>'.$_SERVER['HTTP_REFERER'].'<br />';
Se puede causar XSS mediante el referer...
<?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:
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
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.
## 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:
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:
RewriteRule ^(.*)$ error.php [NC]
## No permitir acceso al .htaccess
##order allow,deny
##deny from all
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
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/
Cita de: 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/
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.
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.
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.
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
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))
Cita de: 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))
Jeje Paisano.... ya mismo me pongo a separar de la base de datos de mas de 4 millones de ciudades, cuales son municipios, jejejejjeje.
Hay algunos scripts, creados.... :rolleyes:
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
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.
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
Hola, buenas noches.
Muchas gracias por haberlo resubido Graphixx y disculpa por las molestias de haberlo tenido que partir :).
Saludos :D
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 !
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