Visualizzazione risultati 1 fino 5 di 5

Discussione: PHP e form di invio immagine

  1. #1
    TheGoldSun non è connesso Neofita
    Data registrazione
    05-11-2004
    Messaggi
    5

    Predefinito PHP e form di invio immagine

    Buon giorno a tutti!

    Grazie innanzi tutto per dedicare attenzione a questo topic.

    Il problema che ho è il seguente, e assicuro che è abbastanza snervante....

    Nel sito che sto tirando su ho inserito un form con metodo post, in cui fra i vari dati testuali e numerici è previsto l'invio di una immagine. Quindi nella pagina oggetto dell'attributo action, ho inserito il codice PHP relativo alla gestione dei dati post e dell'immagine.

    Il problema sta nel fatto che tutti i dati vengono inviati, tranne - o così pare - l'immagine. Le immagini dovrebbero essere mosse dalla cartella temporanea ad una che ho già creato, per tanto non c'è tentativo di creazione di una nuova cartella.

    Il codice, tra l'altro, è sicuramente esatto, dal momento che in locale, l'esecuzione dello script funziona perfettamente, l'immagine viene passata e salvata nella cartella in questione. Ho verificato la questione anche su altervista, per precauzione, con immagini dalle dimensioni ridotte così che non avessero problemi di peso.

    Ora, mi viene un dubbio... Devo in qualche maniera abilitare l'upload di files attraverso php su Altervista? Se si... Come?

  2. #2
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    No, è sufficiente utilizzare gli script per l'upload dei file. (Il concetto di "upload in locale" mi suona un po' strano, visto che solitamente si fa tra un computer e l'altro :))
    Secondo me è un problema di percorsi... Sarebbe comunque più facile aiutarti se ci facessi vedere il codice che hai usato.
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  3. #3
    TheGoldSun non è connesso Neofita
    Data registrazione
    05-11-2004
    Messaggi
    5

    Predefinito il codice

    In locale intendo, su un server locale.. Apache, in sostanza.


    Comunque, ecco il codice.

    Questo è il codice del form. Premetto che ho tagliato tutto meno le parti essenziali, perchè in realtà è integrato ad una tabella ed è piuttosto lungo come form, quindi inlcudo solo le parti relative all'invio del file...
    Codice:
    <form enctype="multipart/form-data" name="insel" action="pag2.php" method="post">
    <input type="file" name="immagine">
    </form>
    Mentre quello che segue è il codice php relativo di pag2.php, unicamente la parte relativa alla manipolazione del file postato.

    Codice:
    <?
    mysql_connect('localhost','account','password');
    mysql_select_db('my_account');
    $estensione=explode(".",$HTTP_POST_FILES['immagine']['name']);
    $tempo=time();
    echo $tempo;
    echo $HTTP_POST_FILES['immagine']['name'];
    if (move_uploaded_file($HTTP_POST_FILES['immagine']['tmp_name'],"cartellaprecreata/".$tempo.".".$estensione[1])){
    	$immagine=$tempo.".".$estensione[1];
    } else {
    	$immagine='standard';
    }
    
    mysql_query() or die(); // non ve la scrivo per intero, è lunga. comunque viene effettuata senza problemi.
    echo "Record inserito correttamente.";
    ?>
    Ora.. va considerato che la query inserisce un record, fra cui anche il nuovo nome del file passato dal form, che viene in pratica rinominato attraverso la condizione if. Quella fork mi serve in sostanza perchè, se non viene inserita immagine, al campo viene affidato il valore "standard", e sostituito nelle pagine praticamente da una immagine standard, invece di una particolare. Il problema è che a quanto pare, il file non viene spostato dalla cartella temporanea a quella precreata, e come risultato naturalmente, la if restituisce FALSE e il campo viene registrato con STANDARD.


    EDIT:
    Ho verificato per sicurezza il codice, anche se ero sicuro fosse corretto.

    Ho inserito nel codice php la funzione

    is_uploaded_file($HTTP_POST_FILES['immagine']['tmp_name'])

    e resituisce FALSE. Ho provato inoltre a verificare con

    echo $_POST['immagine'];

    e, non riesco a capire perchè, è VUOTA! Non riesco in sostanza a postare ne l'immagine ne semplicemente il suo nome. Son disperato. Help.


    EDIT2:
    Niente da fare. Sono davvero snervato: sono quattro giorni che ci perdo la testa e non riesco a capire perchè il form non invia l'immagine... E' come se non ne inserissi.
    Ultima modifica di seneca : 31-10-2009 alle ore 15.37.44

  4. #4
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Ma stai sbagliando.
    L'array da usare non è $_POST ma è $_FILES.

    Saluti!

  5. #5
    TheGoldSun non è connesso Neofita
    Data registrazione
    05-11-2004
    Messaggi
    5

    Predefinito

    .....ma, se rispondete almeno rispondete con pertinenza :(

    Il problema, ho già detto, non è quello. Il fatto $_POST era una verifica, ma memorizza soltanto il nome del file inserito nel form, non l'immagine.

    Per trattare un'immagine postata si può usare l'array $_FILES oppure anche (e ti assicuro che funziona, perchè l'ho già usato su altervista) $HTTP_POST_FILES.

    Il problema, ripeto ancora una volta, è che il form non invia l'immagine. Ma non capisco perchè.





    Scusate per i ripetuti UP. Mi era sfuggito di mente ;)

    Comunque, grazie a tutti, ma ho infine risolto da solo.



    Il problema era unicamente legato al form, come pensavo. Strano ma vero, mi è bastato riscrivere il form esattamente com'era (alla fine ho fatto un copia e incolla molto semplice) e ricostruirlo dallo scheletro. E' venuto esattamente come prima.. ma ora funzionante. E la sintassi non è cambiata. Non capisco ma... l'importante è che funziona.^^ Grazie a tutti. Ciao!
    Ultima modifica di TheGoldSun : 31-10-2009 alle ore 18.03.51

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •