Visualizzazione risultati 1 fino 18 di 18

Discussione: Script di upload: problemi

  1. #1
    Guest

    Predefinito Script di upload: problemi

    Ho creato uno script di upload delle immagini, il quale alla fine dell'upload se è andato a buon fine, riporta il link dell'immagine accompagnato da qualche parola. Il problema è proprio quest'ultimo parte, che non funziona proprio come dovrebbe, mi spiego.

    Questo è il codice della pagina upload.html dove vi è il form di upload:

    Codice HTML:
    <script>
    function verifica()
    {
    fi = document.getElementById('files');
    if(fi.value == '')
    {
    alert('Il campo deve essere riempito!');
    return false;
    }
    }
    </script>
    La dimensione massima consentita è pari a 1 MegaByte.<br /> Le estensioni autorizzate sono: jpg, gif, png, jpeg.<br /><br />
    <center><form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="upfile" id="files">
    <input type="submit" onclick="return verifica();" value="Invia il file"><br />
    </form></center>
    Questo è il codice della pagina upload.php alla quale il fileupload.html passa i dati:

    Codice PHP:
    <?
    $upload_dir
    = "immagini";
    $dir = "http://softnews.altervista.org/articoli/immagini";
    $d = "http://softnews.altervista.org/articoli";
    $cartellup = "immagini";
    $allow_types=array("jpg","gif","png",);
    $max_size = '1024';
    $max_bytes=$max_size*1024;
    function
    get_ext($key) {
    $key=strtolower(substr(strrchr($key, "."), 1));
    $key=str_replace("jpeg","jpg",$key);
    return
    $key;
    }

    $ext_count=count($allow_types);
    $i = 0;
    foreach(
    $allow_types AS $extension) {

    If(
    $i <= $ext_count-2) {
    $types .="*.".$extension.", ";
    } Else {
    $types .="*.".$extension;
    }
    $i++;
    }
    unset(
    $i,$ext_count);
    if(
    trim($_FILES["upfile"]["name"]) == "") {

    die(
    'Nessun file da uppare.<br />Le possibili cause possono essere:<br />Stai uppando un file di dimensioni troppo elevate;<br />Hai ricaricato la pagina quindi i dati sono andati persi.<form method="post" action="./upload.html"><input type="submit" value="Ritorna all\' Indice"></form>');
    }

    if(@
    is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
    $url = 'xxsdf';
    $ext=get_ext($_FILES["upfile"]['name']);
    $gi = ($url) ? '' : ".".$ext;
    $file_name=rand(0,100000).$gi;
    $copia_simile = $file_name;
    $next = $_FILES["upfile"]["name"].'_'.$file_name.'.'.$ext;


    If(!
    in_array($ext, $allow_types)) {

    echo
    "Estensione non valida per il file ".$_FILES["upfile"]['name'].", solo le estensioni ".$types." sono accettate. <br /><br />Il file non &egrave; stato uppato.<form method='post' action='./upload.html'><input type='submit' value='Indietro'></form>";
    exit;
    }
    else if(
    $max_bytes == $_FILES["upfile"]["size"])
    {
    echo
    'Il file &egrave; troppo grande! La massima dimensione &egrave; 1 MB';
    exit;
    }
    @
    move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$next") or die("Errore..");
    } else {

    die(
    "Problemi nell'upload del file " . $_FILES["upfile"]["name"]);

    }
    echo
    "L\'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente.<br /><br />Per inserire l\'immagine nella news, copia il seguente codice: <input type='text' value=$cartellup."/immagini/".$next size=\"85\" readonly onclick='this.focus(); this.select();'>";

    ?>
    Il problema è che ad avvenuto upload, la pagina mi dice soltanto "L'upload del file .-." e basta, mentre dovrebbe darmi il nome, finire la frase e darmi il link da inserire.

    Potete verificare voi stessi, provando a caricare un'immagine aquesto indirizzo.

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    L'upload avviene?
    Prova a inserire all'inizio dello script:
    Codice PHP:
    error_reporting(E_ALL);
    Inoltre togli pure i backslash (\) prima degli apici (') nella riga dove dovrebbe stampare visto che utilizzi le virgolette (").
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    e se vuoi che ti vengano restituiti gli errori togli le @ da davanti alle istruzioni ;)
    ciao

  4. #4
    Guest

    Predefinito

    Ho seguito i consigli di entrambi, e ora oltre a quanto visualizzavo prima, mi dice anche:

    Codice:
    Notice: Undefined variable: types in /membri/softnews/news/upload.php on line 32
    
    Notice: Use of undefined constant immagini - assumed 'immagini' in /membri/softnews/news/upload.php on line 69
    
    Warning: Division by zero in /membri/softnews/news/upload.php on line 69

  5. #5
    Guest

    Predefinito

    Per quanto riguarda gli errori direi che il primo notice è dovutro al fatto che concateni una stringa ad una variabile ($types) non inizializzata.
    Prima di questa parte:
    Codice PHP:
    foreach($allow_types AS $extension) {

    If(
    $i <= $ext_count-2) {
    $types .="*.".$extension.", ";
    } Else {
    $types .="*.".$extension;
    }
    $i++;
    }
    dovresti quantomeno inizializzare $types=''.

    Gli altri due problemi riguardano questa echo:
    Codice PHP:
    echo "L\'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente.<br /><br />Per inserire l\'immagine nella news, copia il seguente codice: <input type='text' value=$cartellup."/immagini/".$next size=\"85\" readonly onclick='this.focus(); this.select();'>";
    Ciao

  6. #6
    Guest

    Predefinito

    Potresti spiegarmi i problemi che da echo? Mi sembra corretto.

  7. #7
    Guest

    Predefinito

    Innanzi tutto l'escape sull'apostrofo (L\'upload del file) dovrebbe essere visualizzato, ma questo è un problema estetico.

    Quello che non và è questa parte:
    ... value=$cartellup."/immagini/".$next....

    Di fatto dividi una stringa (quello che c'è prima di immagini) per una non-variabile (immagini) perché, come immagino tu sappia, le variabili in php devono avere il $ davanti.

    Inoltre la concatenazione delle stringhe andrebbe fatta così:
    ... value=$cartellup"./immagini/."$next....

    Nota che ti ho lasciato volutamente la stringa sbagliata (/immagini/) perché non vedo variabili con quel nome

    Ciao

  8. #8
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da golfox Visualizza messaggio
    Innanzi tutto l'escape sull'apostrofo (L\'upload del file) dovrebbe essere visualizzato, ma questo è un problema estetico.

    Quello che non và è questa parte:
    ... value=$cartellup."/immagini/".$next....

    Di fatto dividi una stringa (quello che c'è prima di immagini) per una non-variabile (immagini) perché, come immagino tu sappia, le variabili in php devono avere il $ davanti.

    Inoltre la concatenazione delle stringhe andrebbe fatta così:
    ... value=$cartellup"./immagini/."$next....

    Nota che ti ho lasciato volutamente la stringa sbagliata (/immagini/) perché non vedo variabili con quel nome

    Ciao
    ???
    What's a beisc?
    Se fai $cartellaup"./immagini/."$next dà errore!!
    E' corretto invece value=".$cartellaup."/immagini/".$next

    Eccetera..!

    Cià!

  9. #9
    Guest

    Predefinito

    Mettetevi d'accordo... ;)

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da Leo91 Visualizza messaggio
    ???
    What's a beisc?
    Se fai $cartellaup"./immagini/."$next dà errore!!
    E' corretto invece value=".$cartellaup."/immagini/".$next

    Eccetera..!

    Cià!
    Prima di fare (inutilmente) lo spiritoso, ti inviterei a leggere bene ciò che uno scrive e poi eventualmente a dare il tuo contributo.

    Mi ricito:
    ...Nota che ti ho lasciato volutamente la stringa sbagliata (/immagini/) perché non vedo variabili con quel nome...
    se poi provi ad eseguire questa echo:
    Codice PHP:
    echo "L\'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente.<br /><br />Per inserire l\'immagine nella news, copia il seguente codice: <input type='text' value=$cartellup."/immagini/".$next size=\"85\" readonly onclick='this.focus(); this.select();'>";
    Settando ovviamente le variabili, ti accorgerai che ti ritorneranno il notice e il warning finale che ha segnalato softnews.

    Detto questo, $cartellup è una stringa ("immagini") e non mi pare che softnews abbia una directory del tipo ..../immagini/immagini/ (ed è uno dei motivi per il quale quello script non andrà...).

    Ciao
    Ultima modifica di golfox : 14-02-2008 alle ore 10.37.37

  11. #11
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da golfox Visualizza messaggio
    Prima di fare (inutilmente) lo spiritoso, ti inviterei a leggere bene ciò che uno scrive e poi eventualmente a dare il tuo contributo.

    Mi ricito:


    se poi provi ad eseguire questa echo:
    Codice PHP:
    echo "L\'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente.<br /><br />Per inserire l\'immagine nella news, copia il seguente codice: <input type='text' value=$cartellup."/immagini/".$next size=\"85\" readonly onclick='this.focus(); this.select();'>";
    Settando ovviamente le variabili, ti accorgerai che ti ritorneranno il notice e il warning finale che ha segnalato softnews.

    Detto questo, $cartellup è una stringa ("immagini") e non mi pare che softnews abbia una directory del tipo ..../immagini/immagini/ (ed è uno dei motivi per il quale quello script non andrà...).

    Ciao
    Spetta spetta, ultima cosa poi non rompo più!

    Per quale motivo /immagini/ dovrebbe essere considerata una variabile?
    EDIT: a questa mi son risposto da solo seguendo il consiglio di rileggere

    Ma comunque scrivere echo "$variabile".testoqualunque."$variabile"; causa sicuramente un errore...
    Boh, sarò stupido: non ci arrivo
    Ultima modifica di Leo91 : 14-02-2008 alle ore 15.18.29

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da Leo91 Visualizza messaggio
    Spetta spetta, ultima cosa poi non rompo più!

    Per quale motivo /immagini/ dovrebbe essere considerata una variabile?
    Per il motivo che php ti avverte che considera immagini una variabile, o meglio costante, anche se non lo è.

    Codice:
    Notice: Use of undefined constant immagini - assumed 'immagini' in /membri/softnews/news/upload.php on line 69
    
    Warning: Division by zero in /membri/softnews/news/upload.php on line 69
    Il division by zero è abbastanza indicativo perché prova anche ad interpretarlo così:

    echo "bla bla bla"/0;

    php santo subito

    Ciao

    P.S. non mi hai rotto

    EDIT: aggiungo a seguito delle tue modifiche
    Il tuo suggerimento e le tue osservazioni sono sicuramente giuste, il problema è che softnews mi pare non abbia la directory ..../immagini/immagini/
    Ultima modifica di golfox : 14-02-2008 alle ore 15.35.19 Motivo: a seguito della modifica di Leo91

  13. #13
    Guest

    Predefinito

    L'upload dovrebbe avvenire nella cartella /immagini che è situata nella cartella news dove c'è anche il file di upload.

  14. #14
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da golfox Visualizza messaggio
    Per il motivo che php ti avverte che considera immagini una variabile, o meglio costante, anche se non lo è.

    Codice:
    Notice: Use of undefined constant immagini - assumed 'immagini' in /membri/softnews/news/upload.php on line 69
    
    Warning: Division by zero in /membri/softnews/news/upload.php on line 69
    Il division by zero è abbastanza indicativo perché prova anche ad interpretarlo così:

    echo "bla bla bla"/0;

    php santo subito

    Ciao

    P.S. non mi hai rotto

    EDIT: aggiungo a seguito delle tue modifiche
    Il tuo suggerimento e le tue osservazioni sono sicuramente giuste, il problema è che softnews mi pare non abbia la directory ..../immagini/immagini/
    Va bene allora
    Scusate l'in"porcamento" del topic

    Ma alla fine il problema è stato risolto. No?

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da softnews Visualizza messaggio
    L'upload dovrebbe avvenire nella cartella /immagini che è situata nella cartella news dove c'è anche il file di upload.
    Scusami ma perché allora nello script ti riferisci alla directory articoli?
    Hai seguito i consigli di gerasimone e funcool?
    Strano che tu non abbia avuto nessun errore soprattutto eseguendo la funzione move_uploaded_file.


    Ciao

  16. #16
    Guest

    Predefinito

    Pardon, intendevo la cartella articoli. Si, ho seguito i consigli, infatti ho riportato i problemi generati.

  17. #17
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Dopo non hai fatto le modifiche che ti sono state suggerite?
    Dopo:
    Codice PHP:
    $ext_count=count($allow_types);
    $i = 0;
    Prova a mettere:
    Codice PHP:
    $types="";

    Al posto di:
    Codice PHP:
    echo "L\'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente.<br /><br />Per inserire l\'immagine nella news, copia il seguente codice: <input type='text' value=$cartellup."/immagini/".$next size=\"85\" readonly onclick='this.focus(); this.select();'>";
    Prova a mettere:
    Codice PHP:
    echo "L'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente.<br /><br />Per inserire l'immagine nella news, copia il seguente codice: <input type=\"text\" value=\"{$cartellup}/immagini/{$next}\" size=\"85\" readonly onclick=\"this.focus(); this.select();\">";
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  18. #18
    Guest

    Predefinito

    Fantastico, ora funziona!

    Grazie!

Regole di scrittura

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