Visualizzazione risultati 1 fino 17 di 17

Discussione: [PHP] Script di upload... Creato ma Errato

  1. #1
    Guest

    Predefinito [PHP] Script di upload... Creato ma Errato

    Ciao a tutti, ho creato questo script... Ma non funziona!! Vi posto il codice:

    Codice PHP:
    <?php

    $file
    = $_FILES['img'];

    define("DIR", "http://riupload.altervista.org/_altervista_ht/");

    if ((
    $file['type'] != "image/gif") ||
    (
    $file['type'] != "image/jpeg") ||
    (
    $file['type'] != "image/jpg") ||
    (
    $file['type'] != "image/png") ||
    (
    $file['type'] != "image/dib") ||
    (
    $file['type'] != "image/bmp") ||
    (
    $file['type'] != "image/jfif") ||
    (
    $file['type'] != "image/jpe") ||
    (
    $file['type'] != "image/tif") ||
    (
    $file['type'] != "image/tiff") ||
    (
    $file['type'] != "image/pjpeg"))
    {
    // apro if principale
    echo "Attenzione: hai selezionato un file che è in un formato non supportato! Torna indietro!";
    }
    // chiudo if principale
    else // apro else principale
    {

    if (isset(
    $_POST['action']) and $_POST['action'] == 'upload') // inizio if 1
    {
    if (isset(
    $file)) // inizio if 2
    {
    if (
    $file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name'])) // inizio if 3
    {
    $cas = rand(0, 9);
    $cas.= rand(0, 9);
    $cas.= rand(0, 9);
    $cas.= rand(0, 9);
    $cas.= rand(0, 9);
    $data = date("d-m-y");
    $nome = $file['name'];
    $nome = str_replace('.gif', '_'.$cas.'_'.$data.'.gif', $nome);
    $nome = str_replace('.png', '_'.$cas.'_'.$data.'.png', $nome);
    $nome = str_replace('.jpg', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.jpeg', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.pjpeg', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.bmp', '_'.$cas.'_'.$data.'.bmp', $nome);
    $nome = str_replace('.dib', '_'.$cas.'_'.$data.'.bmp', $nome);
    $nome = str_replace('.jpe', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.jfif', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.tiff', '_'.$cas.'_'.$data.'.tif', $nome);
    $nome = str_replace('.tif', '_'.$cas.'_'.$data.'.tif', $nome);
    $nome_e_dir = DIR.$nome;
    move_uploaded_file($file['tmp_name'], $nome_e_dir);
    $ok = "La tua immagine è stata caricata al seguente indirizzo: ".$nome_e_dir;
    echo
    $ok;
    }
    // chiudo if 3
    else // apro else 3
    {
    echo
    "Errore interno: riprova...";
    }
    // chiudo else 3
    } // chiudo if 2
    else // apro else 2
    {
    echo
    "Errore: non hai inserito nessun file...";
    }
    // chiudo else 2
    } // chiudo if 1
    else // apro else 1
    {
    echo
    "Errore nel codice: contatta il webmaster...";
    }
    // chiudo else 1
    } // chiudo else principale

    ?>
    Mi dice sempre e comunque "Attenzione: hai selezionato un file che è in un formato non supportato! Torna indietro!".....
    Dov'è l'errore?!?

    EDIT: il form è qui: http://riupload.altervista.org/form.htm
    Ultima modifica di riupload : 03-01-2009 alle ore 23.55.05

  2. #2
    Guest

    Predefinito

    E' sbagliato l'if
    Codice PHP:
    if (($file['type'] != "image/gif") ||
    (
    $file['type'] != "image/jpeg") ||
    (
    $file['type'] != "image/jpg") ||
    (
    $file['type'] != "image/png") ||
    (
    $file['type'] != "image/dib") ||
    (
    $file['type'] != "image/bmp") ||
    (
    $file['type'] != "image/jfif") ||
    (
    $file['type'] != "image/jpe") ||
    (
    $file['type'] != "image/tif") ||
    (
    $file['type'] != "image/tiff") ||
    (
    $file['type'] != "image/pjpeg"))
    Qui devi mettere && al posto di ||.

    Cioè, il file ha un tipo diverso se è diverso da TUTTI quelli lì, non da uno solo, quella condizione è sempre vera.

  3. #3
    Guest

    Predefinito

    Uh hai ragione!! grazie.

  4. #4
    Guest

    Predefinito

    Scusate le 2 risposte di seguito... ma ora ho un altro problema!!
    Ho sostituito "||" con "&&" e passa tutti gli if... dice che l'immagine è stata caricata, da il link, ma in realtà non viene caricata: neanche l'ombra nella cartella _altervista_ht!!!!

  5. #5
    Guest

    Predefinito

    Qui:
    Codice PHP:
    $nome = $file['name'];
    prova a sostituire con:
    Codice PHP:
    $nome = basename($_FILES['img']['name']);

  6. #6
    L'avatar di matt93
    matt93 non è connesso Utente
    Data registrazione
    01-09-2008
    Messaggi
    241

    Predefinito

    piuttosto che fare un if così lungo usa in_array()

    Codice PHP:
    $ext_consentite=array(
    'image/gif',
    'image/jpeg',
    'image/png',
    // Eccetera....
    );
    if(!
    in_array($file['type'],$ext_consentite)){

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da gabryhacker Visualizza messaggio
    Qui
    Codice PHP:
    $nome = $file['name'];
    prova a sostituire con:
    Codice PHP:
    $nome = basename($_FILES['img']['name']);
    Metto basename, ma $_FILES['img']['name'] non serve: L'array $_FILES['img'] l'ho rinominato il $file, provo con basename()...
    Grazie a tutti.

    EDIT:
    Adesso il codice è questo:
    Codice PHP:
    <?php

    $file
    = $_FILES['img'];

    $cons = array(
    "image/jpeg",
    "image/jpg",
    "image/png",
    "image/dib",
    "image/bmp",
    "image/jfif",
    "image/jpe",
    "image/tif",
    "image/tiff",
    "image/pjpeg"
    );
    if(!
    in_array($file['type'],$cons)){

    define("DIR", "http://riupload.altervista.org/_altervista_ht/");

    if (!
    in_array($file['type'],$cons))
    {
    // apro if principale
    echo "Attenzione: hai selezionato un file che &egrave; in un formato non supportato! Torna indietro!";
    }
    // chiudo if principale
    else // apro else principale
    {

    if (isset(
    $_POST['action']) and $_POST['action'] == 'upload') // inizio if 1
    {
    if (isset(
    $file)) // inizio if 2
    {
    if (
    $file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name'])) // inizio if 3
    {
    $cas = rand(0, 9);
    $cas.= rand(0, 9);
    $cas.= rand(0, 9);
    $cas.= rand(0, 9);
    $cas.= rand(0, 9);
    $data = date("d-m-y");
    $nome = basename($file['name']);
    $nome = str_replace('.gif', '_'.$cas.'_'.$data.'.gif', $nome);
    $nome = str_replace('.png', '_'.$cas.'_'.$data.'.png', $nome);
    $nome = str_replace('.jpg', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.jpeg', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.pjpeg', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.bmp', '_'.$cas.'_'.$data.'.bmp', $nome);
    $nome = str_replace('.dib', '_'.$cas.'_'.$data.'.bmp', $nome);
    $nome = str_replace('.jpe', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.jfif', '_'.$cas.'_'.$data.'.jpg', $nome);
    $nome = str_replace('.tiff', '_'.$cas.'_'.$data.'.tif', $nome);
    $nome = str_replace('.tif', '_'.$cas.'_'.$data.'.tif', $nome);
    $nome_e_dir = DIR.$nome;
    $temp = basename($file['tmp_name']);
    move_uploaded_file($temp, $nome_e_dir);
    $ok = "La tua immagine &egrave; stata caricata al seguente indirizzo: ".$nome_e_dir;
    echo
    $ok;
    }
    // chiudo if 3
    else // apro else 3
    {
    echo
    "Errore interno: riprova...";
    }
    // chiudo else 3
    } // chiudo if 2
    else // apro else 2
    {
    echo
    "Errore: non hai inserito nessun file...";
    }
    // chiudo else 2
    } // chiudo if 1
    else // apro else 1
    {
    header("Location:form.htm");
    }
    // chiudo else 1
    } // chiudo else principale

    ?>
    ma mi da sto errore:
    "Parse error: syntax error, unexpected $end in /membri/riupload/upload_img.php on line 74"
    La linea 74 è l'ultima!! Ho semplicemente chiuso il tag PHP
    Ultima modifica di riupload : 06-01-2009 alle ore 19.03.59

  8. #8
    Guest

    Predefinito

    Ti sei dimenticato di chiudere un if, chiudi la parentesi graffa prima di ?>

  9. #9
    Guest

    Predefinito

    Ok grazie a tutti...
    Io in un'altra vita (XD) sono rikkardo...
    Ora sto creando sto sito {Si può vero??}
    Grazie a tutti!!!

    EDIT: Non manca la chiusura di un if (almeno a me sembra!!).
    Comunque adesso non mi da errori ma mi da pagina bianca!!!! UH CHE DISASTRO!!!
    Ultima modifica di riupload : 06-01-2009 alle ore 19.18.01

  10. #10
    Guest

    Predefinito

    Puoi riesmare solo dopo una settimana che nessuno risponde -.-
    Ecco uno script funzionante:
    Codice PHP:
    <?php
    $exts
    = array("jpg","gif","png"); //scrivi le estensioni
    if(!isset($_FILES['file'])) {
    ?>
    <script type="text/javascript">
    function check()
    {
    if(document.forms[0].file.value != '') {
    document.forms[0].submit();
    } else {
    alert("Inserisci un percorso ad un file");
    }
    }
    </script>
    <form action="" name="upload" enctype="multipart/form-data" method="post">
    <label for="file">File: </label>
    <input type="file" name="file"><br>
    <input type="button" value="Upload" onClick="check()">
    </form>
    <?php
    } else {
    $dir = "upload/"; //modifica come credi
    $name = basename($_FILES['file']['name']);
    $p = pathinfo($name);
    if(
    file_exists($dir.$name)) {
    echo
    "Esiste gi&agrave; un file con ".$nome." come nome. Rinomina il file e riprova";
    exit;
    } elseif (
    in_array($p['extension'], $exts)) {
    move_uploaded_file($_FILES['file']['tmp_name'], $dir.$name);
    echo
    "File caricato";
    } else {
    die(
    "Errore interno");
    }
    }
    ?>
    Poi lo personalizzi se ci vuoi aggiungere altre informazioni nel form e ricordati di cambiare le estensioni e il nome della cartella

  11. #11
    Guest

    Predefinito

    No vabè lo script volevo farlo io...
    Per uno script così riuscivo a farlo anche io...
    Chiederò su HTML.it se mi possono aiutare.
    Grazie lo stesso

  12. #12
    Guest

    Predefinito

    Hai seguito che ti ha detto stoner? Non mi sembra non credo sia una risposta appropriata. Aggiungi una } prima di ?> perchè il primo if che apri non risulta chiuso

  13. #13
    Guest

    Predefinito

    io ho provato ad usare lo script di gabryhacker,cambiando solo il percorso della directory di upload da:
    Codice:
    $dir = "upload/"; //modifica come credi
    a:
    Codice:
    $dir = "beta/intro/"; //modifica come credi
    lo script mi dice che ha caricato il file ma non è vero!

    siamo sicuri che funziona quello script?

    alle cartelle beta ed intro ho dato i permessi 777

    Qualcuno l'ha testato?
    Se funziona qualcuno sa dirmi se ho sbagliato ad inserire il percorso?

  14. #14
    Guest

    Predefinito

    L'ho testato io quando lo postai e va

  15. #15
    Guest

    Predefinito

    risolto,era un errore mio
    avevo messo lo script nelal directory "beta/" quindi il percorso che dovevo inserire era "intro/" e basta.

    grazie per il test

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da gabryhacker Visualizza messaggio
    Puoi riesmare solo dopo una settimana che nessuno risponde -.-
    Ecco uno script funzionante:
    Codice PHP:
    <?php
    $exts
    = array("jpg","gif","png"); //scrivi le estensioni
    if(!isset($_FILES['file'])) {
    ?>
    <script type="text/javascript">
    function check()
    {
    if(document.forms[0].file.value != '') {
    document.forms[0].submit();
    } else {
    alert("Inserisci un percorso ad un file");
    }
    }
    </script>
    <form action="" name="upload" enctype="multipart/form-data" method="post">
    <label for="file">File: </label>
    <input type="file" name="file"><br>
    <input type="button" value="Upload" onClick="check()">
    </form>
    <?php
    } else {
    $dir = "upload/"; //modifica come credi
    $name = basename($_FILES['file']['name']);
    $p = pathinfo($name);
    if(
    file_exists($dir.$name)) {
    echo
    "Esiste gi&agrave; un file con ".$nome." come nome. Rinomina il file e riprova";
    exit;
    } elseif (
    in_array($p['extension'], $exts)) {
    move_uploaded_file($_FILES['file']['tmp_name'], $dir.$name);
    echo
    "File caricato";
    } else {
    die(
    "Errore interno");
    }
    }
    ?>
    Poi lo personalizzi se ci vuoi aggiungere altre informazioni nel form e ricordati di cambiare le estensioni e il nome della cartella
    interessante questo script funziona bene apparte in 2 momenti:

    1) se da errore sforma un po le pagine (ovviamente se si trova in tabelle)

    2) sarebbe più opportuno aggiungere dopo "File caricato" un bel refresh della pagina..

    si puo fare secondo voi?

  17. #17
    Guest

    Predefinito

    Codice PHP:
    <?php
    $exts
    = array("jpg"); //scrivi le estensioni
    if(!isset($_FILES['file'])) {
    ?>
    <script type="text/javascript">
    function check()
    {
    if(document.forms[0].file.value != '') {
    document.forms[0].submit();
    } else {
    alert("Inserisci un percorso ad un file");
    }
    }
    </script>
    <form action="" name="upload" enctype="multipart/form-data" method="post">
    <label for="file">File: </label>
    <input type="file" name="file"><br>
    <input type="button" value="Upload" onClick="check()">
    </form>
    <?php
    } else {
    $dir = "immagini_utente/"; //modifica come credi
    $name = basename($_FILES['file']['name']);
    $p = pathinfo($name);
    if(
    file_exists($dir.$name)) {
    echo
    "Esiste gi&agrave; un file con ".$nome." come nome. Rinomina il file e riprova";
    exit;
    } elseif (
    in_array($p['extension'], $exts)) {
    move_uploaded_file($_FILES['file']['tmp_name'], $dir.$name);
    header("location: index.php");
    } else {
    die(
    "Errore interno, probabilmente dovuto ad un'estensione errata.");
    }
    }
    ?>
    volevo sistemare lo script secondo le mie esigenze.... cosi funziona, ma volevo implementarlo cosi:

    1. upload solo per immagini più piccole di 500kb compresi
    2. il nome deve essere cambiato in $variabile1$variabile2 che vengono assegnate dal mio sito
    3. se il file esiste, lo sovrascrivo...
    è possibile? mi date dritte?
    grazie..
    Ultima modifica di linuxmx : 21-10-2009 alle ore 23.20.07

Regole di scrittura

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