- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con upload file php con script di GiorgioTave
-
Leggi sopra
-
Allora.. Naturalmente avevi ragione e il problema era di sintassi.. guardando alla riga 24 ho scoperto che c'era un ";" di troppo.. Ora lo script gira ma da come risultato "invio del file fallito"..
C'è un if proprio quello che mi hai fatto modificare che contiene la destinazione del file uploadato.. sembra che quell'if non si verifichi e dia false come risultato e mandi all'else con il messaggio di errore "invio file fallito.." Perchè c'è bisogno di quell'if? non si potrebbe mettere solo la funzione che effettua l'upload direttamentente? e comunque peche l'if in questione da false? Dovrebbe essere tutto settato correttamente..
Se vuoi dare un ulteriore sguardo di riposto entrambi i codici come sono pubblicati attualmente in seguito alle modifiche che abbiamo apportato insieme:FILE upload.html
<HTML>
<BODY>
<HR>
<FORM METHOD=POST ACTION="uploadit.php "ENCTYPE="multipart/form-data">
<TABLE WIDTH="70%" BORDER="8" CELLSPACING="0">
<TR><TD>
<B>Inserisci il nome del file da inviare </B><INPUT TYPE=FILE NAME="uploadfile"><BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Invia le informazioni!">
<INPUT TYPE="RESET" VALUE="Cancella!">
</TR></TD>
</TABLE>
</FORM>
</BODY>
</HTML>FILE uploadit.php
<?php
echo "<PRE>";
echo "nome del file locale creato dopo l'invio: $uploadfile\n";
echo "nome originale del file remoto: $uploadfile_name\n";
echo "dimensioni del file in byte: $uploadfile_size\n";
echo "tipo di file: $uploadfile_type\n";
echo "</PRE>";
echo "<HR>";abbiamo veramente un file?
if ( $uploadfile == "none" ) {
echo "Non è stato inviato alcun file<BR>";
echo "Ritorna al form per inviare il <A HREF="upload.html">file</A>";
exit;
}controlla innanzitutto le dimensioni del file
se è meno di 3 KB
if ($uploadfile_size < 60003072 ) {
lo copia in una nuova posizione
if (copy($uploadfile,"./delibere/".$uploadfile_name)){
echo "Invio del file riuscito";cancella il file temporaneo
unlink($uploadfile);
} else {
echo "Invio del file fallito";
}
} else {
echo "Spiacente, il file da inviare non deve superare le dimensioni di 3 KB<BR>";
}
?>
Ritorna al form per inviare i <A HREF="upload.html">file</A>A presto
-
Aiutooooo
Non mi abbandonare proprio sul più bello! Please!...:?
-
anche io ho questo problema..sto bestemmiando tutti i santi..una giornata persa a trovare una soluzione che nn è arrivata.
-
Danko quì non rispondono più, comunque se può esserti d'aiuto io facendo numerosi tentativi ho scoperto che lo spazio web sul quale testavo gli script non permette a priori (per motivi di sicurezza) di impostare i permessi di scrittura sui file (il chmod777) quindi nessuno degli oltre 10 script e applicazioni che ho testato, compreso quello in questa discussione poteva funzionare.. inoltre alcuni provider dei servizi di hosting oltre a non dare tali permessi non permettono nemmeno il corretto funzionamento di alcune funzioni del php come l'invio di email direttamente da proprio sito..
Ho risolto (almeno provvisoriamente) aprendo uno spazio free e testando li sopra gli script.. che alla fine.. e dico alla fine con molta pazienza hanno funzionato..
Prima ho provato su http://utenti.lycos.it perchè avevo già tale spazio aperto.. Poi però sono passato ad altervista perche su lycos ci sono pubblicità su pubblicità che invadono a forza le pagine del proprio spazio!
A te..
Spero possa esserti d'aiuto.
In aternativa puoi contattare il tuo provider e chiedere se è possibile avere i permessi di scrittura sulle directory del proprio spazio. Dovrebbe trattarsi del server su cui è ospitato il tuo sito, da quanto ho letto in giro se sei su server windows hai questo problema e per risolverlo il provider dovrebbe spostarti su un server UNIX/LINUX.. Non prendere queste info alla lettera informati!
Ciao
-
bhe non è detto che se non ti fanno impostare i permessi a 777 non puoi caricare ugualmente i tuoi file!!! dipende dalla configurazione del server.
con permessi 777 puoi avere problemi di sicurezza!!!
ad esempio nel nostro servizio di hosting gratuito
ti facciamo settare i permessi a 777 ma non sono assolutamente necessari!!!basterebbe un 700 o 644 l'importante che il tuo utente abbia permessi di scrittura.
-
E come si fa a dare i permessi di scrittura ad un solo utente?
Prendiamo poi l'esempio di una news.. l'utente inserirsce una news.. la pagina che contiene le news deve essere scritta ed aggiornata.. Se non si danno permessi 777 a tutta la directory che contiene tale file che va ad aggiurnarsi automaticamente in seguito alla compilazione del form lo script mostra che il messaggio è stato correttamente inserito ma nell'archivio news e nella pagina che contiene tutte le news non compare nada! Il file non viene scritto a meno che non si imposti il 777.. ho provato per curiosità con altri metodi 766 ecc ma non funzionava..
Perchè proprio 700 o 644? Cosa cambia?
E già che ci siamo vorrei sapere se qualcuno sa spiegarlo in breve e con certezza, quali rischi si corrono a lasciare una directory a 777?
-
ma io sto provando lo script in locale e nn funziona
-
dipende dalla configurazione del tuo server!!!
perchè sicuramente apache gira come utente www-data e che quindi quando crei un file via php o lo carichi via upload lui ti imposta owner www-data
ma la cartella dove stai creando o spostando il file ha i permessi del tuo utente e quindi apache non può scriverci tranne se imposti permessi adeguati per l'utente public oppure se il tuo utente fa parte dello stesso gruppo di apache basterà mettere i permessi di scrittura solo per il gruppo e non per public!
-
Come si fa a rendere un utente membro dello stesso gruppo di apache? io non lavor in remoto, carico direttamente i file sul server per testarli....
Boh...
Non ci sto capendo più di tanto.. So solo che se tocco i permessi chmod non funziona piu niente..
Mah..
-
IL 700 FUNZIONA!
LI AVEVO PROVATI TUTTI MA PENSO CHE QUESTO MI ERA SFUGGITO.. ORA LO SCRIPT FUNZIONA ANCHE CONIL CHMOD700
CHE COSA SAREBBE CAMBIATO? Posso stare tranquillo riguardo al discorso sicurezza con tale impostazione del chmod?
-
RETTIFICO: Il chmod che mi funziona attualmente è il 770.. non 777
-
e neanche 700.. funziona solo con 777 ma non è sicuro (come mi dite) e ora ho scoperto che funzia anche con il 770
-
Ciao
dovrebbe bastarti anche il 666
ovvero possibilità di lettura/scrittura da parte di tutti e esecuzione bloccata.Questo è il chmod classico dei database
nel tuo caso devi solo leggere e scrivere
-
Per una piccola spiegazione dei chmod ti riporto questa tabellina:
Permessi Propietario
lettura 4=si 0=no
scrittura 2=si 0=no
esecuzione 1=si 0=noIl totale fa la prima cifra
Permessi gruppo
lettura 4=si 0=no
scrittura 2=si 0=no
esecuzione 1=si 0=noIl totale fa la seconda cifra
Permessi Utente
lettura 4=si 0=no
scrittura 2=si 0=no
esecuzione 1=si 0=noIl totale fa la terza cifra
Spero che sia chiaro
Ciao
-
si ma in ogni caso potrebbero ugualmente verificarsi problemi di sicurezza!!!
molti provider neanche considerano questo fattore!!!
se gli utenti hanno lo stesso gruppo e non è attivo ne safemode e ne open base dir potrei tranquillamente leggere i file degli altri utenti del server!! con tutte le conseguenze possibili!!
ma solitamente il pensiero che hanno è :" Basta che funziona chi se ne frega della sicurezza "
-
A parte i problemi di sicurezza che tanto non siamo mai sicuri e dobbiamo avere il bK del siti e del db sempre a portata di mano, ci può essere un'altro motivo per cui non vedi l'upload.
In certi ftp devi sganciarti dal server e poi riagganciarti e lo vedi altrimenti sembra che non ti abbia caricato niente.
Parlo per esperienze personali
Ciao
-
Per completare io ho fatto un picccolo script che mi carica pure la descrizione della foto su un file txt che per non sbagliarmi la faccio nominare come la grandezza in byte della foto caricata ovvero fa questa piccola cosa:
se carico pippo-va-a-scuola.jpg di 35725 bite
il file jpg caricato prende questo nome:
35725-pippo-va-a-scuola.jpg
e nella stessa cartella il file txt prende:
35725.txt
Tutto questo perchè se mi caricano la foto e la descrizione posso abbinarle facilmente senza sbagliarmi.