$_SERVER -- $HTTP_SERVER_VARS [deprecated] — Server and execution environment information
$_SERVER['REMOTE_ADDR']
$_SERVER['HTTP_USER_AGENT']
$_SERVER['HTTP_ACCEPT_LANGUAGE']
$_SERVER['SERVER_NAME']
$_SERVER['HTTP_REFERER']$_SERVER['QUERY_STRING']
<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>
'REQUEST_TIME' The timestamp of the start of the request. Available since PHP 5.1.0.
strftime ("%A, il %e di %B del %Y alle %R e %S sec.", $timestamp)
<?php $timestamp=$_SERVER['REQUEST_TIME'] ?><?php echo strftime ("%A, il %e di %B del %Y alle %R e %S sec.", $timestamp) ?><br>
'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>
es: http://maps.google.com/maps?q=37.771008, -122.41175 (puoi inserire il tuo testo qui)&iwloc=A&hl=it
<?php require_once('files/geoplugin.class.php'); $geoplugin = new geoPlugin();....
<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 (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/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 posizionevar marker = new google.maps.Marker({ position: latlng, map: map});} window.onload = initialize;</script>
formattato nella posizione che volete (un <center></center>, una tabella... a fantasia vostra )
<?php $ipaddress = $_SERVER['REMOTE_ADDR']; $date = date ("M dS H:i:s"); $message = "$page - $ipaddress - $date\n";
<!-- semplice track.txt con IP --><?php $ipaddress = $_SERVER['REMOTE_ADDR']; $date = date ("D d M Y H:i:s"); $prov = $_SERVER['HTTP_REFERER']; $proz = $_SERVER['QUERY_STRING'];
$message = " $ipaddress _ $date - $prov - $proz\n";
$File = "track.php"; $Open = fopen($File, "a+"); if ($Open){ fwrite($Open, "$message"); fclose ($Open); } ?>
<?php $ipaddress = $_SERVER['REMOTE_ADDR']; $date = date ("D d M Y H:i:s"); $prov = $_SERVER['HTTP_REFERER']; $proz = $_SERVER['QUERY_STRING']; $message = " $ipaddress _ $date - $prov - $proz\n"; $File = "track.php"; $Open = fopen($File, "a+"); if ($Open){ fwrite($Open, "$message"); fclose ($Open); } ?>
<?php
<?echo "<p align=left>";
$var=@fopen("track.php","a+");
$var2=file("track.php");@fclose($var);
$i=count($var2);//
for($a=0; $a<=$i; $a++){echo $a, " - ", $var2[$a]."<br>";}?>
<?phpecho "<p align=left>";$var=@fopen("track.php","a+");$var2=file("track.php");@fclose($var);$i=count($var2);for($a=0; $a<=$i; $a++){echo $a, " - ", $var2[$a]."<br>";}?>
0 - 1 - 151.62.136.235 _ Jun 05th 15:04:31 _ _ 2 - 151.62.136.235 _ Jun 05th 15:09:16 _ http://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDYQFjAB&url=http%3A%2F%2Fwww.texanogrill.com%2Findex.php&ei=ejivUd6HB6ai4gSjsIGwBg&usg=AFQjCNHDQbU_DOFhUrUmMpqpjB5qgjHRPg&bvm=bv.47380653,d.bGE _ 3 - 151.62.136.235 _ Wed 05 Jun 2013 15:14:45 - - 4 - 151.62.136.235 _ Wed 05 Jun 2013 15:14:49 - - 5 -
Ho formattato la variabile date in un formato più comprensibile ma con mese e giorno della settimana in Inglese (credo che con un IF ELSE si possa tradurre)
e ho messo due variabili che possono servire: sito di provenienza e chiave di provenienza ($prov e $proz).
Only registered users can see contents. Please click here to Register or Login.
1 - Adesso salvate quel file di testo sul vostro pc, editatelo col blocco note e all'inizio dello stesso aggingete la seguente stringa:Codice: Only registered users can see contents. Please click here to Register or Login.2 - Non dimenticate di andare a capo dopo la stringa e memorizzate il tutto come track.php3 - Salvate il file nella directory dalla quale l'avete preso (io uso filezilla per queste cose piccole, ma potete esportare tutti i file da Website X5) e provate a ricaricarlo dal browser
Se invece non appare nulla dove prima leggevate un file di testo la stringa che avete messo fa interpretare al browser che quello che legge è un vero file .php, il browser cerca di interpretarlo vanamente e vi restituisce un risultato vuoto.
E ora veniamo alla lettura dei dati.In una pagina a vostra scelta (con password,
nascosta,
nel vostro pc che interroga il browser con Easyphp funzionante,
in un altro sito ma col percorso giusto per interrogare quel file)
Codice: Only registered users can see contents. Please click here to Register or Login.Il classico allineamento a sinistra
Tips: Se scrivete <? o <?php l'ultimo firefox lo interpreta ugualmente, ma non ho fatto la prova con tutti i browser... questo è solo un esempio e il codice vero e intero lo trovate alla fine.
Codice: Only registered users can see contents. Please click here to Register or Login.apriamo il file (mi raccomando il path, io ho il file nella root ma non so voi) in modalità lettura/scrittura ... perchè?
Codice: Only registered users can see contents. Please click here to Register or Login.
Ho letto e ho provato quanto hai scritto e ti ringrazio per la condivisione. Aggiungo qualche mia considerazione e qualche domanda, sperando possa essere utile per un confronto.
Sicuramente ci saranno vie migliori, ma utilizzando w per il giorno della settimana (0 = domenica, 1 = lunedì, ....) e n per il mese, da memorizzare in due variabili diverse, e utilizzando l'istruzione switch si può avere la traduzione dei termini.
$w = date ("w"); $m = date ("m");
// lettura giorno della settimanaswitch( date("w") ){ case 0:$W="Domenica";break; case 1:$W="Lunedì";break; case 2:$W="Martedi";break; case 3:$W="Mercoledi";break; case 4:$W="Giovedi";break; case 5:$W="Venerdi";break;default:$W="Sabato";break;} // lettura meseswitch( date("m") ){ case 01:$M="Gennaio";break; case 02:$M="Febbraio";break; case 03:$M="Marzo";break; case 04:$M="Aprile";break; case 05:$M="Maggio";break; case 06:$M="Giugno";break; case 07:$M="Luglio";break; case 08:$M="Agosto";break; case 09:$M="Settembre";break; case 06:$M="Ottobre";break; case 11:$M="Novembre";break;default:$M="Dicembre";break;}
$date = $W . " " . date ("d") . " " . $M . " ore " . date ("Y H:i:s");
E' anche possibile inserire un operatore condizionale in modo che se il valore della variabile $_SESSION risultasse vuoto, risulterebbe comunque a video qualcosa.Codice: Only registered users can see contents. Please click here to Register or Login.
<!-- semplice track.txt con IP --><?php// lettura IP $ipaddress = $_SERVER['REMOTE_ADDR'];// lettura giorno della settimanaswitch( date("w") ){ case 0:$W="Domenica";break; case 1:$W="Lunedì";break; case 2:$W="Martedi";break; case 3:$W="Mercoledi";break; case 4:$W="Giovedi";break; case 5:$W="Venerdi";break;default:$W="Sabato";break;} // lettura meseswitch( date("m") ){ case 01:$M="Gennaio";break; case 02:$M="Febbraio";break; case 03:$M="Marzo";break; case 04:$M="Aprile";break; case 05:$M="Maggio";break; case 06:$M="Giugno";break; case 07:$M="Luglio";break; case 08:$M="Agosto";break; case 09:$M="Settembre";break; case 06:$M="Ottobre";break; case 11:$M="Novembre";break;default:$M="Dicembre";break;} // mi costruisco la variabile date $date = $W . " " . date ("d") . " " . $M . " ore " . date ("Y H:i:s");// lettura provenienza e stringa$prov = $_SERVER['HTTP_REFERER'] != '' ? $_SERVER['HTTP_REFERER'] : "link diretto";$proz = $_SERVER['QUERY_STRING'] != '' ? $_SERVER['QUERY_STRING'] : "none"; $message = " $ipaddress - $date - $prov - $proz\n"; $File = "track.php"; $Open = fopen($File, "a+"); if ($Open){ fwrite($Open, "$message"); fclose ($Open); } ?>
Questo passaggio mi sembra laborioso. Non è più semplice creare il file php prima?
Non è il browser che interpreta il file php. E' il server. Quando arriva al browser la pagina è già stata processata dal motore php del server.
Citazionenascostanon sono d'accordo, nemmeno se si usa il nome più improbabile del mondo. Citazionenel vostro pc che interroga il browser con Easyphp funzionante,Mhmm ... questa cosa io non la sapevo proprio. Ho provato e, con il file track.php scritto in quel modo, ottengo questo errore: 1 - Parse error: syntax error, unexpected T_DNUMBER in /xxxxx/xxxxx/xxxxx/track.php on line 2Sto sbagliando qualcosa?
nascosta
$var=@fopen("http://www.bandbverona.com/track.php","a+");//apro il file .txt (modalità lettura/scrittura)$var2=file("http://www.bandbverona.com/track.php");//estraggo l'array dal file .txt
Se usato in una pagina in HTML5, è meglio così:Codice: Only registered users can see contents. Please click here to Register or Login.
La sintassi abbreviata <? non è supportata da tutti i server e dipende dalle impostazioni presenti nel file php.ini (short_open_tag). Anche in questo caso, il browser non cambia le cose.
Non lo so. Perché è necessario aprire qui il file in lettura/scrittura? Nell'altro codice, quello inserito nella pagina da monitorare sì, ma in questa pagina che contiene i risultati del monitoraggio il file viene solo letto, non scritto. Se non esiste, non è qui che si crea, ma nella pagina in cui è inserito il codice precedente. Penso anche che se controlli prima l'esistenza del file con file_exists, ed esegui il resto del codice solo se il file esiste, non dovrebbe essere restituito nessun errore.
Codice: Only registered users can see contents. Please click here to Register or Login.Qui a me sembra ci sia un errore: il ciclo for viene eseguito una volta in più di quanto dovrebbe. Come hai scritto i valori degli elementi dell'array partono da 0. Il ciclo for si deve fermare quando il valore della variabile incremento è inferiore alla variabile $i, quindi così:
Ma certo, sono un autodidatta che sta imparando ora il PHP e non pretendo di insegnare, stavo solo scrivendo quello che ho implementato io in attesa che un altro mi faccia il lavoro che serve a me (ok, non la mettiamo così, diciamo che sto pensando seriamente ad usare Sendblaster).