In attesa di implementare un mio contatore che sostituisca Shinystat (che a pagamento fa di tutto ;D ) vediamo le variabili che vengono passate dal visitatore al sito web, queste sono richiamate con la variabile $_SERVER[...] (anche se per me sarebbe più logico definirla una funzione più che una variabile)
$_SERVER -- $HTTP_SERVER_VARS [deprecated] — Server and execution environment information
La prima è più importante è:
$_SERVER['REMOTE_ADDR']
Questa legge il codice IP in formato XXX.XXX.XXX.XXX
Ancora devo scoprire come geolocalizzare l'indirizzo, ma in teoria con questo posso sapere il paese di provenienza. Se non avete l'IP fisso ogni volta che spegnete il modem/router ADSL si resetta l'IP.
Veniamo al Browser:
$_SERVER['HTTP_USER_AGENT']
Questo fornisce varie informazioni sul browser, forse troppe... nel mio caso Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Questa apparentemente è la lingua del browser con la quale vi collegate
$_SERVER['HTTP_ACCEPT_LANGUAGE']
In realtà credo siano i linguaggi che il browser accetta ... il mio restituisce it,en-us;q=0.7,en;q=0.3
Se il primo termine fosse ru leggerei il cirillico come default... ma ci torniamo su questo risultato
Passiamo alle proprietà del server del sito che stiamo visitando
$_SERVER['SERVER_NAME']
è una variabile che restituisce il dominio (nel mio caso), penso che sia inutile...
Altre variabili
$_SERVER['HTTP_REFERER']
$_SERVER['QUERY_STRING']
Queste invece sono interessanti: mi danno l'indirizzo dal quale si proviene (es. un motore di ricerca) e la stringa di ricerca con la quale si è arrivati.
Utile per una referrer list.
Per mettere insieme tutto questo su una pagina si può scrivere in un oggetto widget:
<p align=left>
Ciao, il tuo indirizzo ip è: <?php echo $_SERVER['REMOTE_ADDR'] ?><br>
Il tuo browser è: <?php echo $_SERVER['HTTP_USER_AGENT'] ?><br>
La lingua è: <?php echo $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?><br>
<!-- Il server su cui ti trovi è: <?php echo $_SERVER['SERVER_NAME'] ?><br> -->
Provieni da: <?php echo $_SERVER['HTTP_REFERER'] ?>
con ricerca <?php echo $_SERVER['QUERY_STRING'] ?>
</p>
Ho levato il sito in cui ci si trova con le classiche rem <!-- --> (a che vi serve?)
Naturalmente i parametri sono tantissimi, ne trovate parecchi su: http://php.net/manual/en/reserved.variables.server.php (http://php.net/manual/en/reserved.variables.server.php)
Una variabile graziosa è
'REQUEST_TIME' The timestamp of the start of the request. Available since PHP 5.1.0.
Come si usa? In realtà la variabile restituisce un valore che si incrementa di un unità a partire dalle ore 0:00:00 del 1/01/1970 UTC (Tempo Coordinato Universale, approssimativamente è l'ora passante per Greenwich) ne si parla su http://www.mario-online.com/timestamp.php (http://www.mario-online.com/timestamp.php) dove si trova la formula:
strftime ("%A, il %e di %B del %Y alle %R e %S sec.", $timestamp)
Per scoprire l'ora di provenienza del visitatore basta memorizzarsi in $timestamp la variabile $_SERVER['REQUEST_TIME'] (non vi serve a nulla avere un valore del tipo "1370186539" da scrivere in paginaweb) e il gioco è fatto
<?php $timestamp=$_SERVER['REQUEST_TIME'] ?>
<?php echo strftime ("%A, il %e di %B del %Y alle %R e %S sec.", $timestamp) ?><br>
Se provate oggi (02/06/2013) la variabile vi restituirà l'ora esatta (se vi collegate dall'Italia Sunday, il 2 di June del 2013 alle 17:22 e 19 sec.) anche se la logica mi porta a dubitare di questo risultato... infatti siamo in ora legale e dovrebbe restituirmi un ora in meno...
Ok, graziosa e per il momento inutile :D
Vi potete divertire a fare delle stringhe con tutti quei dati e visualizzarli
es:
'REMOTE_HOST'<?php echo $_SERVER['REMOTE_HOST'] ?><br>
'REMOTE_USER'<?php echo $_SERVER['REMOTE_USER'] ?><br>
'REDIRECT_REMOTE_USER' <?php echo $_SERVER['REDIRECT_REMOTE_USER'] ?><br>
In una pagina interna del vostro sito, come esercizio di stile può essere interessante fornire tutti i dati di chi vi visita
Ne ho vista una (che da anche altri termini per la $_SERVER[...] è http://www.mario-online.com/mio_indirizzo_ip.php (http://www.mario-online.com/mio_indirizzo_ip.php), ci trovate anche i cookie)
Ma veniamo alla memorizzazione, stavo per cercare su google come memorizzare in un file di testo tutte le variabili (anche se ho letto in forum su un post in cui si parlava di salvarlo come .php) quando curiosando tra i termini restituiti dalle stringhe (vi ricordate it,en-us;q=0.7,en;q=0.3?) ho messo quel termine tra le stringhe trovando questo sito http://www.ballilatini.it (http://www.ballilatini.it) e in particolare questo file: xxxxxxxxxxxxxx.txt
Inutile dire che essendo dati sensibili ho dato un occhiata che non ci fossero password o nomi utenti prima di postarlo, ma è la conferma che non si può salvare in file di testo i dati che potete estrarre dai visitatori
Edit: come hai scritto tu sono dati sensibili. Per il momento per prudenza tolgo il link. Il file è lunghissimo e verificarlo per intero non è cosa di poco tempo.
E adesso parte il problema (lo so che è più Javascript che PHP, ma segue il discorso del contatore di prima e quindi ho dubbi dove mettere questo post)
Sarebbe bellissimo trovare la geolocalizzazione stile http://www.mio-ip.it/?p=geolocalizzazione (http://www.mio-ip.it/?p=geolocalizzazione)
Si tratta solo di trovare le coordinate e inserirle in una pagina google maps richiamabile da iframe
es: http://maps.google.com/maps?q=37.771008, -122.41175 (puoi inserire il tuo testo qui)&iwloc=A&hl=it (http://maps.google.com/maps?q=37.771008, -122.41175 (Geolocalizzazione del lettore del forum!)&iwloc=A&hl=it)
http://maps.google.com/maps?q=37.771008, -122.41175 (puoi inserire il tuo testo qui)&iwloc=A&hl=it (http://maps.google.com/maps?q=37.771008, -122.41175 (Geolocalizzazione del lettore del forum!)&iwloc=A&hl=it)
Ma come trovare le coordinate? Google aiuta chi sa cosa cercare... e quindi cerco un file php
Dopo aver visto le coordinate date da www.hostip.info (http://www.unofficialwsx5.com/www.hostip.info) e aver letto http://blog.casertano.name/2007/07/30/come-fare-per-individuare-la-localizzazione-geografica-di-un-ip/ (http://blog.casertano.name/2007/07/30/come-fare-per-individuare-la-localizzazione-geografica-di-un-ip/) ho scoperto di abitare nella comunità europea... un pò poco da un IP V4... :(
Sono passato a guardare http://www.geoplugin.com/webservices/php (http://www.geoplugin.com/webservices/php)
C'è un meraviglioso codice (potete usare anche il PHP ma dovete includere il files geoplugin.class.php che scaricate da quella pagina) e poi richiamarlo cambiando l'inizio del file di esempio
<?php require_once('files/geoplugin.class.php'); $geoplugin = new geoPlugin();
....
Lo so che era ovvio, ma meglio specificare...
Non volendo dire che è farina del mio sacco (è tutto lì, pronto da usare il codice e vi dice coordinate, regione, città e persino la valuta in corso) lascio il codice dov'è: funziona e lo potete copiare sul vostro sito.
Ma non mi servono le coordinate geografiche, volevo la cartina... volendo usare la googlemaps da un esempio trovato sullo stesso sito http://www.geoplugin.com/examples (http://www.geoplugin.com/examples)
Inserendo questo nelle proprietà della pagina prima del tag </head>
<script src="http://maps.google.com/maps?file=api&v=2&key=Your_Google_Maps_API_Key" type="text/javascript"></script>
<script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>
<script type="text/javascript">
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(geoplugin_latitude(), geoplugin_longitude()), 12);
}
}
</script>
e questo in un oggetto widget
<div id="map" style="width: 500px; height: 300px"></div> <script>load();</script>
In teoria dovrei avere la mappa di casa mia...
E sul sito di geoplugin funziona... non sul mio! :(
Infatti si ottiene:
Google has disabled use of the Maps API for this application.
The provided key is not a valid Google API Key, or it is not authorized for the Google Maps Javascript API v2 on this site.
If you are the owner of this application, you can learn about obtaining a valid key here:
http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#Obtaining_Key
Sigh! E per le API di googlemaps 2... siamo alle API 3... comunque se vi iscrivete alle googlemaps API dovrebbe funzionare
(su quel sito funziona, no? Ma non mi interessa nemmeno provarlo) :)
http://code.google.com/apis/maps/signup.html (http://code.google.com/apis/maps/signup.html) (per iscriversi)
Cambiamo il codice per googlemaps API3, il sito html.it spiega le variabili usate.
Come base si usa: http://www.html.it/articoli/google-maps-v3-creare-una-mappa-con-i-marker/ (http://www.html.it/articoli/google-maps-v3-creare-una-mappa-con-i-marker/)
Aggiungendo lo script di geoplugin (riga 4) e le coordinate date da geoplugin (riga 10)
<!-- codice per geolocalizzazione in googlemaps -->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>
<script type="text/javascript">
var initialize = function() {
// fornisce latitudine e longitudine
var latlng = new google.maps.LatLng(geoplugin_latitude(), geoplugin_longitude());
// imposta le opzioni di visualizzazione
var options = { zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
// crea l'oggetto mappa
var map = new google.maps.Map(document.getElementById('map'), options);
// marker posizione
var marker = new google.maps.Marker({ position: latlng,
map: map});
}
window.onload = initialize;
</script>
E poi nell'oggetto widget il solito:
<div id="map" style="width: 500px; height: 300px"></div> <script>load();</script>
formattato nella posizione che volete (un <center></center>, una tabella... a fantasia vostra :D )
E funziona! (che qualcuno mi spieghi come si formatta il testo nel forum con questo quote, ci sto impazzendo, se faccio modifiche a mano mi scombussola tutto)
Unico problema: se la geolocalizzazione di http://www.mio-ip.it/?p=geolocalizzazione (http://www.mio-ip.it/?p=geolocalizzazione) era precisa quella di geoplugin.net è approssimativa.