Newsgroup: it.comp.www.php
Titolo: seguire un link...

Salve, se volessi capire dove si trova esattamente questo file come posso
fare?
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contratti&iddoc=1&for
mat=AXX
gcaf...@libero.it

Non è detto che il file esista davvero.
Se per caso il sistema ha una colonna blob in un database con dentro il
contenuto del file, l'amministratore potrebbe leggere la colonna dal
database, inviarti un "header" di download, trasmetterti i byte letti dal
db, e tu riceveresti un "Salva con nome" credendo di ricevere un file che
davvero esiste.
Oppure potrebbe memorizzare il file con un altro nome sul suo disco, prima
di mandartelo inviarti un header con un nome diverso e poi mandarti i byte
del file.
In questo modo potresti non essere in grado di sapere mai nè se il file
esiste davvero con quel nome sul filesystem del sito, nè se esiste sul
filesystem come file veramente.
Morale, non puoi essere certo che esista
J

A vedere il link è proprio come detto nella prima soluzione...
Lui legge dal db e ti manda un header con un nome di file che non è detto
che esista sul filesystem.
Questa tecnica è di solito usata per "controllare" che chi scarica il file
abbia fatto login
Ciao
J

dato che saranno circa 2000 link da scaricare avrei voluto trovare una
soluzione rapida!!! arghhh
grazie comunque
"jj" <j...@thecloud.or> wrote in message
news:Juq89.272$yQ2....@news.it.colt.net...


 ha scritto nel messaggio
news:W8s89.79637$n04.2...@twister2.libero.it...


non sono un programmatore PHP... potresti aiutarmi un po'...
la pagina dove sono i link è questa 
http://www.ifarm.it/cnel/contr.htm
sono i contratti di lavoro e vorrei scaricare tutti i file con estensione
AXX
GRAZIE
"jj" <j...@thecloud.or> wrote in message
news:Sds89.284$yQ2....@news.it.colt.net...


Innanzi tutto inizia a cercare la regola con la quale sono scritti gli
indirizzi dei documenti da scaricare:
per esempio (agricoltura):
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contratti&iddoc=1&for
mat=AXX
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contratti&iddoc=2&for
mat=AXX
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contratti&iddoc=3&for
mat=AXX
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contratti&iddoc=4&for
mat=AXX
Questi 4 hanno la cifra iddoc crescente, da 1 a 4
l'ultimo ha cifra finale 34
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contratti&iddoc=34&fo
rmat=AXX
I "Chimici" (la categoria successiva) hanno invece:
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contratti&iddoc=35&fo
rmat=AXX
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contratti&iddoc=36&fo
rmat=AXX
Questo fa pensare che tutti i documenti siano in ordine seguendo iddoc
A questo punto non resta che scrivere il programmino che legge gli
indirizzi, scarica i byte
e li scrive su un file dell'harddisk, in una cartella appositamente creata
chiamata Docs. (Controlla bene i permessi per poter eseguire la scrittura)
Per provare lo script che ti ho fatto, cambia il 674 in 1 e prova... se poi
funziona, rimetti 674.
Ciao
J
<?php
$quanti_file_ci_sono=674;
$cartella_per_documenti="Docs";
// NON CAMBIARE QUI SOTTO
$percorso_corrente=basename(".");
// Crea la cartella per i documenti scaricati
if (!file_exists($percorso_corrente."/".$cartella_per_documenti)){
        if (!mkdir($percorso_corrente."/".$cartella_per_documenti,0700))
exit("La cartella ".$percorso_corrente."/".$cartella_per_documenti." deve
essere cre$
}
for ($i=1;$i<$quanti_file_ci_sono+1;$i++){
        // Decide il nome del file da scrivere sul disco fisso
$documento=$percorso_corrente."/".$cartella_per_documenti."/Nome_Documento_"
.$i.".AXX.ZIP";
        // Apre l'indirizzo
$punta=fopen("
http://www.ifarm.it/cnel/contratti/getall.php3?tabella=contrat
ti&iddoc=".$i."&format=AXX",r);
        // Apre il file su cui scrivere ciň che scarica (un file per ogni
documento)
        $destinazione=fopen($documento,w);
        if (!$destinazione) exit("Attento, non puoi scrivere nel file
".$documento);
        // Ogni cosa che scarica dall'indirizzo la salva nel file
        while(!feof($punta)) {
                $buffer = fread($punta, 4096);
                fwrite($destinazione,$buffer);
        }
        echo("File scaricato: ".$documento."<BR>");
}
?>