Newsgroup: it.comp.www.php
Titolo: Invio dati + Download file

Nel sito che ho realizzato dovrei far scaricare dei file (in particolare sono dei pdf) a
chi mi lascia un paio di dati ed essere avvertito tramite email.
Ho fatto un paginetta con un form che vorrei inviare ad una pagina in php dove all'interno
c'è la funzione "mail" (che so usare tranquillamente) e un qualcosa che permetta
all'utente di fare il download.
Vorrei che l'effetto fosse che, appena premuto invio, compare la classica finestrella di
IE che chiede se aprire o salvare (e in "background" a me arriva l'email).
Come realizzo il download? Io vorrei passare una variabile che contiene quello che è il
nome del file.pdf.... è sbagliato?
Grazie per i consigli
-- 
Se mi conosci lo sai...
Se 'un mi conosci... sai una se## chi so'!!

nome del file.pdf.... è sbagliato?
Lo script che uso io è questo ($file è il nome del file che mi viene
passato tramite form):   
   $path="./download/";
   $file=$_REQUEST['file'];
   $size=filesize($path.$file);
   header("content-type: application/download\n");
   header("Content-Length: $size");
   header("content-disposition: attachment; filename=$file");
   header("Cache-control: private");
   $fn=fopen($path.$file,"r");
   fpassthru($fn);
puoi modificarlo mettendo un if ($fn=...) per controllare che
effettivamente l'operazione di apertura vada a buon fine.
Ciao
Francesco
_____________________________________
Per rispondere in e-mail togli NOSPAM 

effettivamente l'operazione di apertura vada a buon fine.
Puoi darmi una mano? Forse il concetto non l'ho ben chiaro....
Allora: io ho una pagina del sito con un link in questo modo:
<a href="download.php?cat=rotoli" target="blank">prova</a>
A questo punto mi si apre una finestra del browser con un form piů o meno cosě:
<form method="post" action="download_1.php">
Inserisci i dati e fai il download di <?php echo"$_GET[cat]";?><br>
Riferim. <input class="form" name="riferimento" type="text"><br>
<?php  $file="$_GET[cat]";
 echo"<input type=\"hidden\" name=\"$file\">";
 ?><br>
<input name="Submit" type="submit">
</form>
e nel file   download_1.php  ho inserito il tuo codice....
Sai che succede? ...mi fa' scaricare il file download_1.php anziche quello che ho messo
nella directory dowload!!!
Dove sbaglio?
Ciao


nella directory dowload!!!
<form method="post" action="download_1.php">
Inserisci i dati e fai il download di <?php echo"$_GET[cat]";?><br>
Riferim. <input class="form" name="riferimento" type="text"><br>
<?php  $file=$_GET[cat];   //togli le virgolette
 echo"<input type=\"hidden\" name=\"$file\">";
?><br>
<input name="Submit" type="submit">
</form>
ed in download_1.php scrivi:
<?php
// i file da scaricare vanno messi nella cartella download
$path="./download/";     // directory da cui scaricare il file
$file=$_REQUEST['file'];
$size=filesize($path.$file);
header("content-type: application/download\n");
header("Content-Length: $size");
header("content-disposition: attachment; filename=$file");
header("Cache-control: private");
$fn=fopen($path.$file,"r");
fpassthru($fn);
?>
Guarda se funziona, altrimenti posta tutto il codice che lo provo sul
mio.


Guarda se funziona, altrimenti posta tutto il codice che lo provo sul mio.
AAAaaaaahhhhhhhhh!!!!
Ora con l'invio mi da' Pagina Non Trovata!!!! Non so' piů come fare. A "occhio" mi pareva
una cosa semplice anche per uno come me non troppo esperto!!
Ti posto il codice cosě come l'ho provato.... e ti ringrazio molto per l'aiuto che mi stai
dando
Ciao
*********************************************
FILE  prova.php (un normale file con contenuto html + un paio di "include" e il link che
serve ad aprire la finestra col form):
<a href="#"
OnClick="MM_openBrWindow('x_download.php?cat=rotoli','','width=400,height=225')">Download
catalogo Rotoli</a>
*********************************************
FILE  download.php:
<html>
<head>
<title>Download Catalogo <?php echo"$_GET[cat]";?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
<form method="post" action="download_1.php">
Inserisci i dati e fai il download di <?php echo"$_GET[cat]";?><br>
Riferim. <input class="form" name="riferimento" type="text"><br>
<?php
$file=$_GET[cat];   //togli le virgolette
echo"<input type=\"hidden\" name=\"$file\">";
?>
<br>
<input name="submit" type="submit">
</form>
</body>
</html>
*********************************************
FILE  download_1.php:
<?php
// i file da scaricare vanno messi nella cartella download
$path="./download/";     // directory da cui scaricare il file
$file=$_REQUEST['file'];
$size=filesize($path.$file);
header("content-type: application/download\n");
header("Content-Length: $size");
header("content-disposition: attachment; filename=$file");
header("Cache-control: private");
$fn=fopen($path.$file,"r");
fpassthru($fn);
?>
*********************************************


?>
ma il file da scaricare come si chiama??


ma il file da scaricare come si chiama??
Nella directory download ho messo un file che, per ora, si chiama "rotoli" e in futoro
sarà rotoli.pdf. Nella stessa directory infatti ci dovranno stare una decina di file da
far scaricare. Ogni link (quello con OnClick che apre una finestrella) passerà un valore
di "cat" al file download.php


di "cat" al file download.php
Il problema è quello che ti ho detto prima, ora non posso testare il
tuo script però, mi spiace! prova a vedere se le variabili arrivano
correttamente tramite i form; il file "rotoli" ce l'hai messo nella
cartella download?


cartella download?
Si, il file c'č. Avevo commesso un errore di "calligrafia" e non trovava la pagina. Ora la
trova ma mi chiede  nuovamente di scaricare il file download_1.php.
Adesso vado a casa e nel fine settimana mi leggo il manuale del php. Lunedě torno piů
preparato (spero!!)... se non riesco mi ritroverai a chiedere aiuto!!!   :-DD
Ciao e grazie ancora...


Ciao e grazie ancora...
Non č questione di php ma di passaggio di variabili, secondo me non
arriva la variabile.


 manca l'attributo value="xxx"
OK. Hai ragione mancava!!
Adesso l'ho messo ma il risultato non cambia!! Continua a chiedermi di scaricare il file
DOWNLOAD_1.PHP anzichè il file ROTOLI
Questo è il pezzo di file che apre la finestrella e che passa il nome del file da
scaricare (senza estensione o con l'estensione...tanta sarà la stessa cosa!!)
<a href="#"
onClick="MM_openBrWindow('x_download.php?cat=rotoli','','width=400,height=225')">Download
catalogo Rotoli</a>
Questo è il codice del file DOWLOAD.PHP (quello con il form)
<form method="post" action="download_1.php">
Inserisci i dati e fai il download di <?php echo"$_GET[cat]";?><br>
Riferim. 
  <input name="riferimento" type="text" class="form" value="prv">
  <br>
<?php
$file=$_GET[cat]; 
echo"<input type=\"hidden\" name=\"nomefile\" value=\"$file\">";
echo"La variabile è:  $file"; //per vedere se la variabile è ok
?>
<br>
  <input name="submit" type="submit" value="Manda!!">
</form>
E questo è il file DOWNLOAD_1.PHP (quello che dovrebbe farmi scaricare il file ROTOLI
nella directory DOWNLOAD)
<?php
// i file da scaricare vanno messi nella cartella download
$path="./download/";     // directory da cui scaricare il file
$file=$_REQUEST['file'];
$size=filesize($path.$file);
header("content-type: application/download\n");
header("Content-Length: $size");
header("content-disposition: attachment; filename=$file");
header("Cache-control: private");
$fn=fopen($path.$file,"r");
fpassthru($fn);
?>


$file=$_REQUEST['file'];
Il problema è che hai fatto confusione fra il nome ed il valore della
variabile passata, il nome è nomefile ed il valore è $file, cioè
"rotoli"; quindi in download_1.php devi mettere 
$file=$_REQUEST['nomefile'];


 ?>
attenzione che usando questo codice ogni utente che ha accesso allo 
script riesce a leggerti tutti i files su disco!
usa
$file=basename($_REQUEST['file'])
ciao

$file=$_REQUEST['nomefile'];
Mammamiaaaaa!!!! Che stupido... ero talmente nel pallone che non ho praticamente letto
quello che scrivevo!!!
Grazie1000... in questo modo funziona.


Grazie1000... in questo modo funziona.
Prego :-)
Occhio alla sicurezza, come ha fatto anche notare Ranger! Fai anche
dei controlli sulle variabili che vengono passate.


$file=basename($_REQUEST['file'])
Grazie per l'informazione... l'ho già inserita nello script
Ciao
