Newsgroup: it.comp.www.php
Titolo: Problemi con upload...

Salve,
ho gia postato qui in merito adesso il problema che ho il seguente:
Innanzi tutto incollo i codici essendo abbastanza brevi:
"modulo.htm"
<html>
<FORM ACTION="do_upload.php" METHOD="POST" ENCTYPE="multipart/form-data">
<DIV ALIGN=CENTER>
<P><STRONG>File da caricare:</STRONG>
<BR><INPUT TYPE=FILE NAME="superdat" SIZE=25>
</P>
<P><INPUT TYPE=SUBMIT NAME="submit" VALUE="Carica File"></P>
</DIV>
</FORM>
</html>
"do_upload.php"
<?
if ($superdat_name != "") {
copy("$superdat", "
http://utenti.lycos.it/ragazzisiciliani/$superdat_name
") 
or
die("Impossibile copiare il file.");
} else {
 die("Nessun file specificato.");
}
?>
<html>
<head>
        <title>phpUpLoad V 1.0</title>
<body bgcolor=white text=black link=blue>
<!--Header/Logo-->
<p align=center><img SRC="images/phpupload.gif"  ALT="phpupload.gif"></p>
<p align=center>You sent: <? echo "$superdat_name"; ?>, a <? echo 
"$superdat_size"; ?>
byte file with a mime type of <? echo "$superdat_type"; ?>.</p>
</p></center>
</body>
</html>
In pratica quando provo a fare l'upload mi dice "Impossibile copiare il 
file". Non so se' e' un problema di codice, di permessi del sito... e' la 
mia prima esperienza di questo tipo e non so come orientarmi.
Se volete/potete provare l'indirizzo e': 
http://utenti.lycos.it/ragazzisiciliani/modulo.htm
Grazie

Innanzi tutto incollo i codici essendo abbastanza brevi:
Il codice che hai postato è obsoleto, non so dove lo hai preso ma
buttalo via. per fare l'upload correttamente leggi qui:
http://www.php.net/manual/it/features.file-upload.php
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

 orientarmi.
Perche' non iniziare leggendo il manuale?
http://www.php.net/manual/en/features.file-upload.php
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 
http://www.php.net/manual/it/features.file-upload.php
Il fatto e' che ci sono molti termini, riferimenti a funzioni varie, che io 
non ho mai sentito quindi non seguo molto bene, in ogni caso se non ho 
capito male lo script che devo mettere e' il seguente:
<?php
// Nelle versioni di PHP precedenti alla 4.1.0 si deve utilizzare 
$HTTP_POST_FILES anzichè $_FILES.
// Nelle versioni di PHP precedenti alla 4.0.3, si utilizzi copy() e 
is_uploaded_file() anzichè move_uploaded_file
$uploaddir = '/
http://utenti.lycos.it/ragazzisiciliani
';   [*]
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . 
$_FILES['userfile']['name'])) {
   print "Il file è valido, e inviato con successo.  Ecco alcune 
informazioni:\n";
   print_r($_FILES);
} else {
   print "Possibile attacco tramite file upload! Alcune informazioni:\n";
   print_r($_FILES);
}
?>
[*] L'originale era $uploaddir = '/var/www/uploads/';
Ovviamente cambio anche il codice del modulo il quale sara'
<form enctype="multipart/form-data" action="_URL_" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Invia questo file: <input name="userfile" type="file">
<input type="submit" value="Invia File">
</form>Ok ora riprovo, speriamo bene :)Grazie a entrambi 

 <form enctype="multipart/form-data" action="_URL_" method="post">
E qui metto invece action=
http://utenti.lycos.it/ragazzisiciliani
Con queste modifiche dovrebbe andare giusto?
Grazie 

 Con queste modifiche dovrebbe andare giusto?
No, copia l'esempio del manuale e parti da quello.
http://www.php.net/manual/en/features.file-upload.php
-- 
I am what I am, I do what I can


 
http://www.php.net/manual/en/features.file-upload.php
Ma se la riga seguente:
$uploaddir = '/var/www/uploads/'
non e' quella del mio sito va bene??
Ciao 

 non e' quella del mio sito va bene??
Ovviamente no, ma di certo non va bene nemmento questo:
[ti quoto]
$uploaddir = '
http://utenti.lycos.it/ragazzisiciliani
'; 
[/ti quoto]
Leggiti il manuale su come funziona l'upload, stai usando un URL dove
andrebbe un path.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E


 andrebbe un path.
Ah siccome metto tutti i file nella directory principare forse devo mettere 
"/" come path?
Ciao 

Dimenticavo di chiederti:
nel codice del form e' giusto 
action="
http://utenti.lycos.it/ragazzisiciliani
"  ???
Grazie 

 mettere "/" come path?
Hai delle lacune di base piuttosto grosse.
Stai confondendo URL, path e path virtuali.
DEVI inserire il path assoluto del FS e non un path relativo alla
document root del sito.
-- 
I am what I am, I do what I can


 action="
http://utenti.lycos.it/ragazzisiciliani
"  ???
Lycos supporta il PHP?
http://utenti.lycos.it/ragazzisiciliani
 e' l'URL dello script di upload?
-- 
I am what I am, I do what I can


 
http://utenti.lycos.it/ragazzisiciliani
 e' l'URL dello script di upload?
Allora ho messo 
http://utenti.lycos.it/ragazzisiciliani/do_upload.php
 
ovvero il nome dello script che il modulo richiama.
Ho provato a fare l'upload di un file di testo e di una jpg ma ottengo 
questo errore:
Possibile attacco tramite file upload! Alcune informazioni: Array ( 
[userfile] => Array ( [name] => BioZarish.txt [type] => text/plain 
[tmp_name] => /tmp/phppO4WRc [error] => 0 [size] => 1254 ) )
Quindi il codice viene eseguito ma si verifica la condizione sbagliata... 
forse devo attivare in qualche modo i tipi di file che e' possibile 
uploadare?
Ciao 

 document root del sito.
FS? E quale e' il path assoluto?
Ciao 

 E quale e' il path assoluto?
Dipende dal server su cui e installato.
print(__FILE__); 
Ovviamente devi riadattare il valore restituito alle tue necessita'.


 e' possibile uploadare?
No.


 Dipende dal server su cui e installato.
Intendi in base all'os che il server usa? Su tripod quando faccio l'upload 
la directory principare e' "/" come la root di Linux. 

 la root di Linux. 
No, non credo proprio, "/" al massimo e' il virtual path della document
root, non di certo il path sul filesystem.


 root, non di certo il path sul filesystem.
E come faccio a capire quale e' il fs che ha il server?
Grazie 

 E come faccio a capire quale e' il fs che ha il server?
Non e' importante quale filesystem, ma come e' configurato il webserver
per utilizzaro, e comunque te lo ho indicato 2 post fa ...


 Ovviamente devi riadattare il valore restituito alle tue necessita'.
Quel comando mi stampa __FILE__ come se fosse una stringa. Non ottengo 
nessuna informazione.
Ciao 

 nessuna informazione.
Scusa la domanda apparentemente scontata, ma... hai provato a *leggerla*
la stringa in questione?
-- 
Stéphane Bisinger
Webmas... well...

 nessuna informazione.
Davvero? Che strano, ed io che pensavo stampasse il path completo del
file in cui e' inserito ...


Pensavo che __FILE__ fosse qualche costante che contenesse informazioni.
Se no scusa per quale motivo mi hai dato quella funzione?
Forse devo mettere io qualcosa a posto di __FILE__?
Se no a che serve? 
-- 
Noixe

 la stringa in questione?
La stringa in questione e': __FILE__
cosa c'e' da leggere? 
-- 
Noixe

 informazioni.
Perche' non lo e?
E dire che il manuale ne e' convinto ...
http://www.php.net/manual/en/language.constants.predefined.php


 cosa c'e' da leggere? 
Il manuale, comincia con quello.
http://www.php.net/manual/en/language.constants.predefined.php


 
http://www.php.net/manual/en/language.constants.predefined.php
Bah forse ho scritto __FILES__ e non __FILE__
cmq alla fine ho ottenuto questo output: 
/data/members/free/tripod/it/r/a/g/ragazzisiciliani/htdocs/do_upload.php
Ho messo come directory in cui fare l'upload: 
/data/members/free/tripod/it/r/a/g/ragazzisiciliani/htdocs
ma non funziona lo stesso. 

 ma non funziona lo stesso. 
Probabilmente non hai i permessi giusti...
