+ Rispondi alla Discussione
Risultati da 1 a 4 di 4

Problema con form di upload

Ultimo Messaggio di Oslino il:
  1. #1
    User
    Data Registrazione
    Aug 2012
    Località
    Grognardo
    Messaggi
    11

    Problema con form di upload

    Rieccomi qui, nella speranza di trovare ancora in Voi la soluzione ad un mio problema, ringrazio anticipatamente tutti!
    Ho creato un form in php che mi consente di uploadare un'immagine in mysql in formato blob, poi ho aggiunto una sessione (che lo script riconosce) e vorrei inserire nella stessa tabella, in aggiunta ai dati trasmessi, anche la mail dell'utente.
    E' evidente che mi sono incasinato, non ci sono riuscito.
    Qualcuno sa dirmi dove sbaglio?

    file upload.php:
    <?
    function upload()
    {
    $result = false;
    $immagine = '';
    $size = 0;
    $type = '';
    $nome = '';
    $max_size = 12000000;
    $result = @is_uploaded_file($_FILES['file']['tmp_name']);
    if (!$result)
    {
    echo "Impossibile eseguire l'upload.";
    return false;
    }else{
    $size = $_FILES['file']['size'];
    if ($size > $max_size)
    {
    echo "Il file è troppo grande.";
    return false;
    }
    $type = $_FILES['file']['type'];
    $nome = $_FILES['file']['name'];
    $immagine = @file_get_contents($_FILES['file']['tmp_name']);
    $immagine = addslashes ($immagine);
    $email = $_FILES['email'];
    @include 'config.php';
    $sql = "INSERT INTO immagini (nome, size, type, immagine, email) VALUES ('$nome','$size','$type','$immagine', '$email')";
    $result = @mysql_query ($sql) or die (mysql_error());
    return true;
    }
    }
    ?>
    <?php
    mysql_free_result($Recordset1);
    ?>

    file form_invio.php:

    <?php
    // continua la sessione
    session_start();

    @include 'upload.php';
    if (isset($_FILES['file']))
    {
    upload();
    }
    // includiamo il file di configurazione
    @include "config.php";
    // recupera i dati della sessione
    "Username = " . $_SESSION["id_user"];
    $sql_io = "SELECT email FROM iscrizioni where id_user = ". $_SESSION["id_user"];
    $query_io = @mysql_query($sql_io) or die (mysql_error());
    $row_io = mysql_fetch_array($query_io);
    $io= $row_io['email'];
    echo "
    <h3>Upload</h3>
    <form enctype=\"multipart/form-data\"
    action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
    <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"12000000\" />
    <input type=\"file\" name=\"file\" size=\"40\" />
    <input type=\"hidden\" name=\"email\" value=\"<? $io; ?>\" />
    <input type=\"submit\" value=\"Invia\" />
    </form>
    <br /><a href=\"link.php\">Elenco</a>";
    ?>

    Grazie ancora!
    Marco

  2. #2
    Utente Premium
    Data Registrazione
    Jun 2014
    Località
    Rimini
    Messaggi
    232
    Nello specifico non dici qual è il problema che ti dà, ma guardando il codice il problema che salta subito all'occhio è che nel campo dell'input nascosto con name='email' , il value usa gli short tag (<? anzichè <?php che non funzionano se il server non è settato per riconoscerli) e soprattutto manca l' echo per far stampare il valore estratto dalla query. In pratica nel tuo codice quel valore del form rimane sempre vuoto.

    Poi ci sono altri passaggi che non capisco, ma esulano dalla tua richiesta.

    EDIT: Guardando meglio, gli short tag sono all'interno della stringa echo! Quindi il value viene stampato preceduto da <? e seguito dal punto e virgola. Ma la stringa php si interrompe subito dopo trovando il tag di chiusura. Togli i due short tag, togli il punto e virgola e riprova.
    Ultima modifica di Oslino; 07-03-15 alle 14:52

  3. #3
    User
    Data Registrazione
    Aug 2012
    Località
    Grognardo
    Messaggi
    11
    Giusto, mi sono spiegato molto male....sorry!
    Allora, il problema era che dal form_invio.php non riuscivo a passare nel campo nascosto

    <input type=\"hidden\" name=\"email\" value=\"<? $io; ?>\" />

    l'indicazione della e-mail, la giusta sintassi è;

    <input type=\"hidden\" name=\"email\" value=\"$io\" />

    mentre quella del file upload.php:

    <?
    function upload()
    {
    $result = false;
    $immagine = '';
    $size = 0;
    $type = '';
    $nome = '';
    $max_size = 12000000;
    $io = $email;
    $result = @is_uploaded_file($_FILES['file']['tmp_name']);
    if (!$result)
    {
    echo "Impossibile eseguire l'upload.";
    return false;
    }else{
    $size = $_FILES['file']['size'];
    if ($size > $max_size)
    {
    echo "Il file è troppo grande.";
    return false;
    }
    $type = $_FILES['file']['type'];
    $nome = $_FILES['file']['name'];
    $email = $_POST['email'];
    $immagine = @file_get_contents($_FILES['file']['tmp_name']);
    $immagine = addslashes ($immagine);
    @include 'config.php';
    $sql = "INSERT INTO immagini (nome, size, type, immagine, email) VALUES ('$nome','$size','$type','$immagine','$email')";
    $result = @mysql_query ($sql) or die (mysql_error());
    return true;
    }
    }
    ?>
    <?php
    mysql_free_result();
    ?>

    Ora riesco ad inserire tutti i record in mysql ma, mi piacerebbe, che alla fine dell'upload mi caricasse un'altra pagina php....avete qualche suggerimento?
    Grazie ancora....

  4. #4
    Utente Premium
    Data Registrazione
    Jun 2014
    Località
    Rimini
    Messaggi
    232
    Il sistema più semplice è usare la funzione header() alla fine dello script upload.php
    Codice PHP:
    header('Location: http://www.tuosito.it/pagina-finale.php'); 
    http://www.w3schools.com/php/func_http_header.asp

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.