jueves, 30 de marzo de 2017

Php Funcion para obtener y enviar los geodatos con la ip

Veamos como obtener los geodatos de los visitantes de nuestra web y como mediante una función estos se envian a nuestra dirección @.
Creo que no haría falta ni decir que hemos de descargar la clase geoplugin.class.php, gratuita, desde la web; he implementarla en nuestro servidor, local o remoto.
En otro post explico como configurar WampServer para el envio automático de mail en función mediante SendMail, os dejo el enlace xsi:
http://programasgratisytutoriales.blogspot.com/2017/03/wampserver-configurar-sendmail-php-mail.html
      
<?php

    mens();
    geo_1();
    geo();

/////////////////////////////////////////////////////////////////////////////////////////////////

/*
En esta función vemos como podemos, utilizando la clase geoplugin.class.php, geolocalizar a los visitantes de nuestra web y enviar por mail los datos de nuestro servidor y visitantes, ya geolocalizados.
Las funciones están comprobadas y funcionando.

*/

 function mens(){
        
    require_once('geoplugin_class/geoplugin.class.php');
    $geoplugin = new geoPlugin();
    $geoplugin->locate();

$text_body = " <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
                <html>
                    <head>

                        <title>Untitled Document</title>
                        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
                        <meta http-equiv='content-type' content='text/html' charset='utf-8' />
                        <meta http-equiv='Content-Language' content='es-es'>
                        <META NAME='Language' CONTENT='Spanish'>
                    </head>
                        <body bgcolor='#D7F0E7'>
                    <STYLE>
                        body {
                            font-family: 'Times New Roman', Times, serif;
                        }
                        body a {
                            text-decoration:none;
                        }
                        table a {
                            color: #666666;
                            text-decoration: none;
                            font-family: 'Times New Roman', Times, serif;
                        }
                        table a:hover {
                            color: #FF9900;
                            text-decoration: none;
                        }
                        tr {
                            margin: 0px;
                            padding: 0px;
                        }
                        td {
                            margin: 0px;
                            padding: 6px;
                        }
                        th {
                            padding: 6px;
                            margin: 0px;
                            text-align: center;
                            color: #666666;
                        }
                    </STYLE>
    <table font-family='Times New Roman' width='90%' border='0' align='center' cellpadding='0' cellspacing='0'>
                <tr>
                    <th colspan='3'>NOTIFICACIÓN DE ...</th>
                </tr>
                <tr>
                    <th colspan='3'>MENSAJE AUTOMÁTICO</th>
                </tr>
                <tr>
                    <td align='right'>ASUNTO:</td>
                    <td width='12'>&nbsp;</td>
                    <td align='left'>
                            SE HA ..... WEB ....
                    </td>
                </tr>
                <tr>
                    <td align='right'>FECHA:</td>
                    <td>&nbsp;</td>
                    <td align='left'>".date('d-m-Y/H:i:s')."</td>
                </tr>
                <tr>
                    <td align='right'>URL:</td>
                    <td>&nbsp;</td>
                    <td align='left'>".$_SERVER['HTTP_HOST']."/".$_SERVER['PHP_SELF']."</td>
                </tr>
                <tr>
                    <td align='right'>SERVER NAME:</td>
                    <td>&nbsp;</td>
                    <td align='left'>".$_SERVER['SERVER_NAME']."</td>
                </tr>
                <tr>
                    <td align='right'>SERVER IP:</td>
                    <td>&nbsp;</td>
                    <td align='left'>".$_SERVER['SERVER_ADDR']."</td>
                </tr>
                <tr>
                    <td align='right'>SERVER ADMIN:</td>
                    <td>&nbsp;</td>
                    <td align='left'>".$_SERVER['SERVER_ADMIN']."</td>
                </tr>
                <tr>
                    <td align='right'>IP ACCESS:</td>
                    <td>&nbsp;</td>
                    <td align='left'>".$_SERVER['REMOTE_ADDR']."</td>
                </tr>
                <tr>
                    <td align='right'>GEOLOCATION FOR:</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->ip}</td>
                </tr>
                <tr>
                    <td align='right'>LONGITUD:</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->longitude}</td>
                </tr>
                    <tr>
                    <td align='right'>LATITUD:</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->latitude}</td>
                </tr>
                <tr>
                    <td align='right'>COUNTRY NAME</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->countryName}</td>
                </tr>
                <tr>
                    <td align='right'>COUNTY CODE:</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->countryCode}</td>
                </tr>
                <tr>
                    <td align='right'>REGION:</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->region}</td>
                </tr>
                <tr>
                    <td align='right'>CITY:</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->city}</td>
                </tr>
                <tr>
                    <td align='right'>AREA CODE:</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->areaCode}</td>
                </tr>
                <tr>
                    <td align='right'>DMA CODE:</td>
                    <td>&nbsp;</td>
                    <td align='left'>{$geoplugin->dmaCode}</td>
                </tr>
                    </table>
                </body>
            </html>";
           
    $headers = array ('From' => "juanbarrospazos@hotmail.es",
                      'Subject' => "NOTIFICACION DE....");
                $destinatario= "juanbarrospazos@hotmail.es";
                $titulo= "NOTIFICACION DE....";
                $responder= "juanbarrospazos@hotmail.es";
                $remite= "juanbarrospazos@hotmail.es";
                $remitente= "MENSAJE GENERADO AUTOMATICAMENTE";
                $separador = "_separador".md5 (uniqid (rand()));
                $cabecera = "Date: ".date('l j F Y, G:i')."\n";
                $cabecera .="MIME-Version: 1.0\n";
                $cabecera .="From: ".$remitente."<".$remite.">\n";
                $cabecera .="Return-path: ". $remite."\n";
                $cabecera .= "Reply-To: ".$remite."\n";
                $cabecera .="X-Mailer: PHP/". phpversion()."\n";
                $cabecera .= "Content-Type: multipart/mixed;"."\n";
                $cabecera .= " boundary=$separador"."\r\n\r\n";    /**/
                $texto_html ="\n"."--$separador"."\n";            /**/
                $texto_html .="Content-Type:text/html; charset=\'utf-8\'"."\n";
                $texto_html .="Content-Transfer-Encoding: 7bit"."\r\n\r\n";
                $texto_html .= $text_body;
                $mensaje= $texto_html;
            if( mail($destinatario, $titulo, $mensaje, $cabecera)){print("* MAIL ENVIADO OK");
                            }else{print("* MAIL NO ENVIADO");}

 }
   
/////////////////////////////////////////////////////////////////////////////////////////////////

/*
Esta función vemos el funcionamiento básico de la clase geoplugin.class.php.
*/

function geo_1(){
   
require_once('geoplugin_class/geoplugin.class.php');
$geoplugin = new geoPlugin();
// If we wanted to change the base currency, we would uncomment the following line
// $geoplugin->currency = 'EUR';

$geoplugin->locate();

echo "<br/><br/>
    Geolocation results for {$geoplugin->ip}: <br />\n".
    "City: {$geoplugin->city} <br />\n".
    "Region: {$geoplugin->region} <br />\n".
    "Area Code: {$geoplugin->areaCode} <br />\n".
    "DMA Code: {$geoplugin->dmaCode} <br />\n".
    "Country Name: {$geoplugin->countryName} <br />\n".
    "Country Code: {$geoplugin->countryCode} <br />\n".
    "Longitude: {$geoplugin->longitude} <br />\n".
    "Latitude: {$geoplugin->latitude} <br />\n".
    "Currency Code: {$geoplugin->currencyCode} <br />\n".
    "Currency Symbol: {$geoplugin->currencySymbol} <br />\n".
    "Exchange Rate: {$geoplugin->currencyConverter} <br />\n";

/*if ( $geoplugin->currency != $geoplugin->currencyCode ) {
    //our visitor is not using the same currency as the base currency
    echo "<p>At todays rate, US$100 will cost you " . $geoplugin->convert(100) ." </p>\n";
   
}*/

/* find places nearby
$nearby = $geoplugin->nearby();
if ( isset($nearby[0]['geoplugin_place']) ) {
    echo "<pre><p>Some places you may wish to visit near " . $geoplugin->city . ": </p>\n";
    foreach ( $nearby as $key => $array ) {

        echo ($key + 1) .":<br />";
        echo "\t Place: " . $array['geoplugin_place'] . "<br />";
        echo "\t Country Code: " . $array['geoplugin_countryCode'] . "<br />";
        echo "\t Region: " . $array['geoplugin_region'] . "<br />";
        echo "\t County: " . $array['geoplugin_county'] . "<br />";
        echo "\t Latitude: " . $array['geoplugin_latitude'] . "<br />";
        echo "\t Longitude: " . $array['geoplugin_longitude'] . "<br />";
        echo "\t Distance (miles): " . $array['geoplugin_distanceMiles'] . "<br />";
        echo "\t Distance (km): " . $array['geoplugin_distanceKilometers'] . "<br />";

            }
        echo "</pre>\n";
    }*/

}

/////////////////////////////////////////////////////////////////////////////////////////////////

/*
En esta función, igual que en otro post, vemos como nos imprime los datos de nuestro servidor.
*/

function geo(){   

print("    <div align='center' style='text-align:left;margin-left:auto;margin-right:auto;width:350px' >
            <br/>URL: ".$_SERVER['HTTP_HOST']."/".$_SERVER['PHP_SELF']."
            <br/>SERVER NAME: ".$_SERVER['SERVER_NAME']."
            <br/>SERVER IP: ".$_SERVER['SERVER_ADDR']."
            <br/>SERVER ADMIN: ".$_SERVER['SERVER_ADMIN']."
           
            <!-- // IP Acceso -->
            <br/>IP Access: " . $_SERVER['REMOTE_ADDR'] ."
            <!-- // IP compartido -->
            <br/>IP Share: " . $_SERVER['HTTP_CLIENT_IP'] ."
            <!-- // IP Proxy -->
            <br/>IP Proxy: " . $_SERVER['HTTP_X_FORWARDED_FOR'] ."
        </div>
                ");

$indicesServer = array('PHP_SELF',
'argv',
'argc',
'GATEWAY_INTERFACE',
'SERVER_ADDR',
'SERVER_NAME',
'SERVER_SOFTWARE',
'SERVER_PROTOCOL',
'REQUEST_METHOD',
'REQUEST_TIME',
'REQUEST_TIME_FLOAT',
'QUERY_STRING',
'DOCUMENT_ROOT',
'HTTP_ACCEPT',
'HTTP_ACCEPT_CHARSET',
'HTTP_ACCEPT_ENCODING',
'HTTP_ACCEPT_LANGUAGE',
'HTTP_CONNECTION',
'HTTP_HOST',
'HTTP_REFERER',
'HTTP_USER_AGENT',
'HTTPS',
'REMOTE_ADDR',
'REMOTE_HOST',
'REMOTE_PORT',
'REMOTE_USER',
'REDIRECT_REMOTE_USER',
'SCRIPT_FILENAME',
'SERVER_ADMIN',
'SERVER_PORT',
'SERVER_SIGNATURE',
'PATH_TRANSLATED',
'SCRIPT_NAME',
'REQUEST_URI',
'PHP_AUTH_DIGEST',
'PHP_AUTH_USER',
'PHP_AUTH_PW',
'AUTH_TYPE',
'PATH_INFO',
'ORIG_PATH_INFO') ;

echo '<table align="center">' ;
foreach ($indicesServer as $arg) {
    if (isset($_SERVER[$arg])) {
        echo '<tr>
                <td align="left">'.$arg.'</td>
                <td align="left">' . $_SERVER[$arg] . '</td>
              </tr>' ;
    }
    else {
        echo '<tr>
                <td align="left">'.$arg.'</td>
                <td align="left">-</td>
              </tr>' ;
    }
}
echo '</table>' ;

             }

/////////////////////////////////////////////////////////////////////////////////////////////////

?>

No hay comentarios:

Publicar un comentario

Gracias por vuestros aportes.