Underc0de

Programación Web => Back-end => Mensaje iniciado por: graphixx en Enero 03, 2013, 10:31:08 PM

Título: "Super contador de Visitas en PHP"=300MB SQL+4 millones de registros+Scripts
Publicado por: graphixx en Enero 03, 2013, 10:31:08 PM
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) (http://www.4shared.com/folder/Jnp1ZoKQ/ipproject.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 (php) [Seleccionar]

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

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