Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Form con upload e campi obbligatori

    Ciao a tutti,

    devo inserire in un sito in html un form con tutti i campi obbligatori e inoltre con un bottone che consenta l'upload di un file. Ho creato tutto ma non gira e non riesco a trovare la magagna, qualcuno potrebbe dare un'occhiata al codice e suggerirmi eventuali correzioni, per favore...grazie

    form.htm
    codice:
    <form name="personalContact" enctype="multipart/form-data" method="post" action="mail.php"> <fieldset> <label>Title:<input name="title" type="text" size="25" maxlength="30"></label>
    
     <label>Name:<input name="name" type="text" size="25" maxlength="30"></label>
    
     <label>Surname:<input name="surname" type="text" size="25" maxlength="30"></label>
    
     <label>Email:<input name="email" type="text" size="25" maxlength="40"/> </label>
    
     <label>Telephone:<input name="telephone" type="text" size="25" maxlength="30"></label>
    
     <label>Fax:<input name="fax" type="text" size="25" maxlength="30"></label>
    
    </fieldset> 
     <fieldset> <legend>Article</legend>
     <label>Title:<input name="titleArticle" type="text" size="25" maxlength="160"></label>
    
     <label>Category: <select name="category"> <option selected>papers</option> <option>results</option> <option>ideas</option> <option>dialogue</option> </select>
    
    --> Select a file to upload: <input name="all" type="file" id="all"> 
    
     </fieldset> 
     <button type="reset">Reset</button>
     <button type="submit">Send</button></form>
    mail.php
    codice:
    <?php if(isset($_POST['title']) && isset($_POST['name']) && isset($_POST['surname']) && isset($_POST['email']) && isset($_POST['telephone']) && isset($_POST['fax']) &&){ $header=""; $msg=""; $boundary='--' . md5( uniqid(time()) ); $ctencoding="8bit"; $subject="Subject"; $body="data"; $to="xxx@gmail.com"; $from=$_POST['email']; $fromname=$_POST['surname']; $ctype="application/octet-stream"; $basename=$_FILES['all']['tmp_name']; $name=$_FILES['all']['name']; $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n"; $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$boundary\"\n"; $header.="Content-Transfer-Encoding: 8bit\n"; $msg .="This is a multi-part message in MIME format.\n--$boundary\n"; $msg .= "Content-Type: text/plain; charset=iso-8859-1\n"; $msg .= "Content-Transfer-Encoding: 8bit\n\n" . $body ."\n"; $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n"; $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n"; $linesz= filesize( $basename)+1; $fp= fopen( $basename, 'r' ); $content = chunk_split(base64_encode(fread( $fp, $linesz))); fclose($fp); $msg .= chr(13) . chr(10).$content; $result = @mail($to,$subject,$msg."\n",$header); if($result){ echo "
    
    Il tuo messaggio &egrave; stato inoltrato con successo!</p>
    
    Grazie!</p>"; }else{ echo "
    
    E' stato riscontrato un errore sul server.
    Impossibile inviare il messaggio.</p>
    
    Riprova pi&ugrave; tardi.</p>"; } }else{ echo "
    
    Non hai compilato tutti i campi del modulo!</p>
    
    Campi mancanti:</p>"; if(!isset($_POST['title'])){ echo "Title
    ";} if(!isset($_POST['name'])){ echo "Name
    ";} if(!isset($_POST['surname'])){ echo "Surname
    ";} if(!isset($_POST['email'])){ echo "Email
    ";} if(!isset($_POST['telephone'])){ echo "Telephone
    ";} if(!isset($_POST['fax'])){ echo "Fax
    ";} } ?>
    Il tutto dovrebbe arrivare via mail coi dati del form come corpo del messaggio e il file come allegato...
    Anche un link di riferimento sarebbe utile

    Grazie a tutti

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,779
    ciao,
    prima cosa indenta per bene il codice.
    così com'è risulta illeggibile

  3. #3

    codice scritto correttamente

    Scusate ma pensavo indentasse con la formattazione CODE

    form.htm
    codice:
    <form name="personalContact" enctype="multipart/form-data" method="post" action="mail.php"> 
    <fieldset>
    <label>Title:<input name="title" type="text" size="25" maxlength="30"></label>
    
     <label>Name:<input name="name" type="text" size="25" maxlength="30"></label>
    
     <label>Surname:<input name="surname" type="text" size="25" maxlength="30"></label>
    <label>Email:<input name="email" type="text" size="25" maxlength="40"/> </label>
    
     <label>Telephone:<input name="telephone" type="text" size="25" maxlength="30"></label><label>Fax:<input name="fax" type="text" size="25" maxlength="30"></label>
    
    </fieldset> 
     
    <fieldset> 
    <legend>Article</legend>
     
    <label>Title:<input name="titleArticle" type="text" size="25" maxlength="160"></label>
    <label>Category: <select name="category"> 
    <option selected>papers</option> <option>results</option> 
    <option>ideas</option> 
    <option>dialogue</option> 
    </select>
    
     
    
    Select a file to upload: <input name="all" type="file" id="all"> 
    
     
    </fieldset> 
     
    <button type="reset">Reset</button>
     
    <button type="submit">Send</button> </form>
    mail.php

    codice:
    <?php if(isset($_POST['title']) && isset($_POST['name']) 
    && isset($_POST['surname']) && isset($_POST['email']) 
    && isset($_POST['telephone']) && isset($_POST['fax']) 
    &&{ $header=""; 
    $msg=""; 
    $boundary='--' . md5( uniqid(time()) ); 
    $ctencoding="8bit"; 
    $subject="Subject"; 
    $body="data"; 
    $to="xxx@gmail.com"; 
    $from=$_POST['email']; 
    $fromname=$_POST['surname'];
    $ctype="application/octet-stream"; 
    $basename=$_FILES['all']['tmp_name']; 
    $name=$_FILES['all']['name']; $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n"; $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed; 
    \n boundary=\"$boundary\"\n"; 
    $header.="Content-Transfer-Encoding: 8bit\n"; 
    $msg .="This is a multi-part message in MIME format.\n--$boundary\n"; $msg .= "Content-Type: text/plain; charset=iso-8859-1\n"; $msg .= "Content-Transfer-Encoding: 8bit\n\n" . $body ."\n"; $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n"; 
    $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n"; 
    $linesz= filesize( $basename)+1; 
    $fp= fopen( $basename, 'r' ); 
    $content = chunk_split(base64_encode(fread( $fp, $linesz))); 
    fclose($fp); 
    $msg .= chr(13) . chr(10).$content; 
    $result = @mail($to,$subject,$msg."\n",$header); 
    if($result){ echo "
    
    Il tuo messaggio è stato inoltrato con successo!</p>
    
    
    Grazie!</p>"; } 
    else{ echo "
    
    
    E' stato riscontrato un errore sul server.
    Impossibile inviare il messaggio.</p>
    
    Riprova più tardi.</p>"; } } 
    else{ echo "
    
    Non hai compilato tutti i campi del modulo!</p>
    
    Campi mancanti:</p>"; if(!isset($_POST['title'])){ echo "Title
    ";} 
    if(!isset($_POST['name'])){ echo "Name
    ";} if(!isset($_POST['surname'])){ 
    echo "Surname
    ";} 
    if(!isset($_POST['email'])){ echo "Email
    ";} if(!isset($_POST['telephone'])){ echo "Telephone
    ";} if(!isset($_POST['fax'])){ 
    echo "Fax
    ";} } ?>
    grazie

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,779
    ok, il form mi pare a posto.

    proceduralmente:
    • prima cosa carichi il file sul server
    • poi prepari la mail con l'allegato (fai una verifica che ci sia un allegato da caricare altrimenti va in errore)
    • spedisci
    • elimini il file se pensi non sia necessario mantenerlo sul server


    sposto in php

  5. #5
    Prova cosi
    Codice PHP:
    <?php if(isset($_POST['title']) && isset($_POST['name'])  && isset($_POST['surname']) && isset($_POST['email'])  && isset($_POST['telephone']) && isset($_POST['fax'])  

    $header="";  $msg="";  
    $boundary='--' md5uniqid(time()) );  
    $ctencoding="8bit";  
    $subject="Subject";  
    $body="data";  
    $to="xxx@gmail.com";  
    $from=$_POST['email'];  
    $fromname=$_POST['surname']; 
    $ctype="application/octet-stream";  
    $basename=$_FILES['all']['tmp_name'];  
    $name=$_FILES['all']['name']; 
    $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n";
    $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;  \n boundary=\"$boundary\"\n";  
    $header.="Content-Transfer-Encoding: 8bit\n";  $msg .="This is a multi-part message in MIME format.\n--$boundary\n"$msg .= "Content-Type: text/plain; charset=iso-8859-1\n"
    $msg .= "Content-Transfer-Encoding: 8bit\n\n" $body ."\n"
    $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n";  
    $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n";  
    $lineszfilesize$basename)+1;  
    $fpfopen$basename'r' );  
    $content chunk_split(base64_encode(fread$fp$linesz)));  
    fclose($fp);  
    $msg .= chr(13) . chr(10).$content;  
    $result = @mail($to,$subject,$msg."\n",$header);  
    if(
    $result){ 
    echo 
    "

    Il tuo messaggio è stato inoltrato con successo!</p> 

    Grazie!</p>"

    }  else{ 
    echo 


    E' stato riscontrato un errore sul server.
    Impossibile inviare il messaggio.</p>

    Riprova più tardi.</p>"
    ; } }  
    else{ echo 
    "

    Non hai compilato tutti i campi del modulo!</p>

    Campi mancanti:</p>"

    if(!isset(
    $_POST['title'])){ echo "Title
    "
    ;}  
    if(!isset(
    $_POST['name'])){ echo "Name
    "
    ;}
    if(!isset(
    $_POST['surname'])){  echo "Surname
    "
    ;}  
    if(!isset(
    $_POST['email'])){ echo "Email
    "
    ;} 
    if(!isset(
    $_POST['telephone'])){ echo "Telephone
    "
    ;} 
    if(!isset(
    $_POST['fax'])){  echo "Fax
    "
    ;} } 
    ?>

  6. #6

    Grazie....

    ...per aver dato un'occhiata al codice ma purtroppo non funziona

    Qualcuno mi potrebbe dare una mano? Non sono per niente esperta di php

    grazie

  7. #7
    Mancava una parentesi nel if.
    Codice PHP:
    <?php 
    if(isset($_POST['title']) && isset($_POST['name'])  && isset($_POST['surname']) && isset($_POST['email'])  && isset($_POST['telephone']) && isset($_POST['fax']) )
     {  
    $header="";  
    $msg="";   
    $boundary='--' md5uniqid(time()) );   
    $ctencoding="8bit";   
    $subject="Subject";   
    $body="data";  
    $to="xxx@gmail.com";   
    $from=$_POST['email'];   
    $fromname=$_POST['surname'];  
    $ctype="application/octet-stream";   
    $basename=$_FILES['all']['tmp_name'];   
    $name=$_FILES['all']['name'];  
    $header.="From: \"$fromname\" <$from>\nReturn-Path: $from\nX-Priority: 3\nTo: $to\n"
    $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;  \n boundary=\"$boundary\"\n";   
    $header.="Content-Transfer-Encoding: 8bit\n";  
    $msg .="This is a multi-part message in MIME format.\n--$boundary\n"
    $msg .= "Content-Type: text/plain; charset=iso-8859-1\n";  
    $msg .= "Content-Transfer-Encoding: 8bit\n\n" $body ."\n";  
    $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n";   
    $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n";   
    $lineszfilesize$basename)+1;   
    $fpfopen$basename'r' );   
    $content chunk_split(base64_encode(fread$fp$linesz)));   
    fclose($fp);   
    $msg .= chr(13) . chr(10).$content;   
    $result = @mail($to,$subject,$msg."\n",$header);   
    if(
    $result){  
    echo 
    "

    Il tuo messaggio è stato inoltrato con successo!</p> 

    Grazie!</p>"
    ;  }  
    else{  
    echo 


    E' stato riscontrato un errore sul server.
    Impossibile inviare il messaggio.</p>

    Riprova più tardi.</p>"


    }   else{ echo 
    "

    Non hai compilato tutti i campi del modulo!</p>

    Campi mancanti:</p>"
    ;  
    if(!isset(
    $_POST['title'])){ echo "Title
    "
    ;}   
    if(!isset(
    $_POST['name'])){ echo "Name
    "
    ;} 
    if(!isset(
    $_POST['surname'])){  echo "Surname
    "
    ;}   
    if(!isset(
    $_POST['email'])){ echo "Email
    "
    ;}  
    if(!isset(
    $_POST['telephone'])){ echo "Telephone
    "
    ;}  
    if(!isset(
    $_POST['fax'])){  echo "Fax
    "
    ;} 
    }  
    ?>
    Se qualcosa non va puoi abilitare gli errori cosi
    Codice PHP:
    ini_set('error_reporting'E_ALL); 
    ini_set("display_errors"1); 

  8. #8

    adesso...

    ...la mail viene correttamente inviata con il file allegato ma non arrivano correttamente i dati inseriti nel form; mi spiego: piuttosto che arrivare come corpo della mail

    name = Giovanni
    surname = Rossi
    email = grossi@gmail.com

    ecc ecc non arrivano tutti e quelli che arrivano sono al posto del nome del mittente.
    Come faccio a spostarli nel corpo della mail?

    Poi non mi trova i campi vuoti perciò la mail parte a prescindere senza segnalare l'errore agli utenti che compilano il form.

    Come faccio a rimediare a questi due errori?

    grazie e

  9. #9

    Aggiornamento

    Ciao a tutti,

    sono riuscita a far comparire nel corpo della mail i campi che vengono riempiti nel form ma non so come rendere obbligatori tutti i campi in modo che se non sono tutti riempiti compaia a video l'errore coi campi del form non compilati evidenziati.

    qualcuno mi da una mano?

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.