Newsgroup: it.comp.www.php
Titolo: Rilevare "Last Update" di siti web in PHP

Ciao a tutti,
vorrei risolvere il seguente problema sfruttando, se esiste, qualche
funzione PHP:
Dato un elenco di siti web ci si connetta ad ognuno di essi e si notifichi
con un messaggio/una mail o altro che il sito ha subito un aggiornamento.
E' possibile fare in PHP una richiesta HTTP che mi restituisca il parametro
"Last Update"?
Se qualcuno ha idee in merito le accetto volentieri
Bye Roberto
--------------------------------
Inviato via 
http://usenet.libero.it

 "Last Update"?
Non so se esiste un parametro php che faccia un controllo di questo tipo, 
ma credo fortemente di no...
Io ho un sito e devo far vedere il last update in un altro e faccio che 
far vedere la data dell'ultima news del sito in questione...
Non so se ti può essere utile... Spero!
-- 
Luke, lo Steccalecca - Cavaliere Jedi
Ex allievo della Maestra Jedi Alkaid Oto
Home Page: 
http://www.fanwars.it
 - Email: 
li...@fanwars.it
- To err is human. To really screw things up takes a computer -

 parametro "Last Update"?
Cercando su Google:
    http header "last modified" php query
tra le 4000 e passa pagine ne ho trovata una interessante:
http://zope1.devshed.com/zope.devshed.com/Server_Side/PHP/WatchingTheWeb/page4.html
Da questa ho ricavato questo cosino, che era un po' carente in fatto di
controlli di errore:
<?
error_reporting(E_ALL); # per Jurgen ;-)
# questi parametri possono anche arrivare da un form!
if (!isset($host)) $host = "127.0.0.1";
if (!isset($path)) $path = "index.html";
if (!isset($porta)) $porta = "80";
if (!isset($timeout)) $timeout = "60";
$fp = fsockopen ($host, $porta, $errno, $errstr, $timeout);
if (!$fp) {
    echo "ERRORE IN CONNESSIONE: $errstr ($errno)<br>\n";
} else {	
    // send HEAD request and read response
    $response = "";
    $request = "HEAD /$path HTTP/1.0\r\n\r\n";
    fputs ($fp, $request);
    while (!feof($fp)) 
    {
        $response .= fgets ($fp, 500);
    }
    fclose ($fp);
    // split response into lines
    $lines = explode("\r\n", $response);
 
    // scan lines for "Last-Modified" header
    foreach($lines as $l)
    {
	if (ereg("^Last-Modified:", $l))	
	{
	    // split into variable-value component
	    $arr2 = explode(": ", $l);
	    $newDate = gmdate("Y-m-d H:i:s", strtotime($arr2[1]));
	} else {
	    $newDate = "ULTIMO AGGIORNAMENTO NON DISPONIBILE";
	}
    }
    echo "Risposta del server<br> per <b>$host/$path</b>: <pre>$response</pre><br><br>";
    echo $newDate;
}
?>
 
E' molto comodo non solo per la data dell'ultimo aggiornamento, ma anche
per avere tutte le risposte fornite dal server. Esempio:
Risposta del server
per 
php.dopoil.com/index.html
:
HTTP/1.1 302 Found
Date: Mon, 16 Dec 2002 16:25:02 GMT
Server: Apache/1.3.27 (Unix) PHP/4.2.3 mod_ssl/2.8.11 OpenSSL/0.9.6a
X-Powered-By: PHP/4.2.3
location: 
http://php.dopoil.com/faq.php?index.html
Connection: close
Content-Type: text/html
A proposito, qualcuno mi spiega come si imposta Apache per obbligarlo a
fornire la data dell'ultimo aggiornamento, PRIMA che mi legga tutte le
4000 pagine di cui sopra?
Ne avessi una, nel mio computer, che mi dice quando e' stata aggiornata!
-- 
Marco Bernardini - bernama chiocciola libero it
<<I got a pair of shoes older than you are, so
what the fuck should I expect you to know?>>
- W. Gibson, "Count Zero"

 Content-Type: text/html
Sono risposte non molto sicure, dipende dal settaggio del server.
Al
-- 
Alground Research Center
--

 Sono risposte non molto sicure, dipende dal settaggio del server.
Questo significa che non tutti i server sono configurati per restituire
nella risposta dell'HEAD il "Last modified" o comunque altri parametri?


 nella risposta dell'HEAD il "Last modified" o comunque altri parametri?
A quanto pare...
Infatti ho trovato molti siti che consigliano di forzare l'header "Last
Modified".
Bisogna che vada a leggermi il manuale di Apache.
 
ciao
