Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    67

    aggiungere campi e allegato a modulo php

    Premessa che di php ne so proprio poco.

    Allora sto mettendo su un modulo affinchè nel modulo stesso sia possibile allegare una foto o il proprio curriculum.
    Ora ho provato con formail e funziona bene pero' non riesco ad allegare il file.
    Il codice di mio test è questo:

    <body bgcolor="#FFFFFF">
    <form action="formtomail.php" method=post>
    <table border="0">
    <tr>
    <td colspan=2 height=60 valign=middle><font size="+2">FORM TO EMAIL DI ESEMPIO 2 </font></td>
    </tr>
    <tr>
    <td>Nome e cognome:</td>
    <td valign="top"><input type="text" name="Nome" size="40" style="font-family: Verdana; font-size: 8 pt"></td>
    </tr>
    <tr>
    <td>Indirizzo:</td>
    <td valign="top"><input type="text" name="Indirizzo" size="25" style="font-family: Verdana; font-size: 8 pt">
    Cap:
    <input type="text" name="Cap" size="6" style="font-family: Verdana; font-size: 8 pt">
    Città:
    <input type="text" name="Città" size="20" style="font-family: Verdana; font-size: 8 pt">
    Provincia:
    <input type="text" name="Provincia" size="2" style="font-family: Verdana; font-size: 8 pt"></td>
    </tr>
    <tr>
    <td>E-mail:</td>
    <td valign="top"><input type="text" name="Email" size="30" style="font-family: Verdana; font-size: 8 pt"></td>
    </tr>
    <tr>
    <td>Telefono:</td>
    <td valign="top"><input type="text" name="Telefono" size="20" style="font-family: Verdana; font-size: 8 pt"></td>
    </tr>
    <tr>
    <td>Cellulare:</td>
    <td valign="top"><input type="text" name="Cellulare" size="20" style="font-family: Verdana; font-size: 8 pt"></td>
    </tr>
    <tr>
    <td>Seleziona argomento:</td>
    <td valign="top"><select name="oggetto" id="oggetto">
    <option>Richiesta informazioni tecniche</option>
    <option>Richieste informazioni commerciali</option>
    <option>Consigli e suggerimenti</option>
    </select></td>
    </tr>
    <tr>
    <td valign=top>Motivo della richiesta:</td>
    <td valign="top"><textarea name=contenuto cols=60 rows=8 style="font-family: Verdana; font-size: 10 pt">
    </textarea></td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <input type=hidden name=recipient value="tuoindirizzoemail@inserisciiltuosito.com">
    <input type=hidden name=requested value="Nome,Indirizzo,Città,Cap,Telefono,contenuto ">
    <input type=hidden name=ip value="">
    <input type="reset" value="Cancella Modulo" name="Cancella" style="font-family: Verdana; font-size: 8 pt">
    <input type="submit" value="Invia" style="font-family: Verdana; font-size: 8 pt"></td>
    </tr>
    <tr>
    <td colspan=2 height=60 valign=middle> In questo form di esempio, sono obbligatori i campi Indirizzo, Città, Cap, Telefono e Contenuto.</td>
    </tr>
    </table>
    </form>


    Se aggiungo la stringa per far ricercare il file sul proprio pc metterei questo:

    <tr>
    <td>allega file:</td>
    <td><input type="hidden" name="MAX_FILE_SIZE" value="100000">
    <input name="allegafile" type="file" id="allegafile" size="16"></td>
    </tr>

    pero' nel file di formail.php che codice dovrei mettere affinchè il file mi arrivi come allegato?

    Questo è il codice del formail che sto cercando di capire :

    <?php
    //////////////////////////////////////////////////////////////
    // //
    // Gm Form Mail by Giancarlo Moschitta - giancarlo@myphp.it //
    // //
    // Versione 1.1 modificata da Alessandro Fiorotto //
    // //
    //////////////////////////////////////////////////////////////

    // compatibilità con REGISTER_GLOBALS OFF e PHP 4.1
    foreach ($_POST as $kk => $vv) {
    $$kk = $vv;
    }
    $_P = $_POST;
    $sitorigine=$_SERVER['HTTP_HOST'];

    // controllo del campo mittente e settaggio variabile FROM
    if (strlen($Email)==0) {
    $Email = "ATTENZIONE NEL TUO FORM MANCA IL CAMPO Email <$sitorigine@>\r\n";
    }

    $from = "";
    $from .= "From: $Email\r\n";
    $from .= "Reply-To: $Email\r\n";
    eval ("\$from = \"$from\";");

    $richiesti=explode(",",$requested);
    $nascosti=array("recipient","oggetto","requested", "redirect","ip","Email");
    $count=count($richiesti);

    for ($i=0; $i<$count; $i++){
    $a = $richiesti[$i];
    if(trim($_P[$a])=="") {
    $mess.="Il campo $a è vuoto
    ";
    }
    }

    if($mess) {
    echo "<table><tr><td style=\"font-family:verdana;font-size:10 pt\">
    Il form non è stato inviato per i seguenti errori:

    $mess
    </td></tr></table>";
    }
    else {
    while(list($nome, $value) = each($_P)){
    $campi[]=$nome;
    if(!in_array($nome, $nascosti)){
    $body.= "$nome: $value\n";
    }
    }
    $head="Modulo proveniente dal sito $sitorigine\n";
    $giorno=date("d/m/y");
    $ora=date("H:i:s");
    $foot="Compilato il $giorno alle ore $ora";

    if (in_array ("ip", $campi)) {
    $indirizzoip=$_SERVER['REMOTE_ADDR'];
    $foot.=" dall'IP $indirizzoip\n";
    }

    $contenuto=$head.$foot."\n\n".$body;
    mail($recipient, $oggetto, $contenuto, $from);
    if ($redirect){
    header("Location: $redirect");
    }
    else {
    echo "Il modulo è stato inviato correttamente";
    }
    }
    ?>


    Mi piacerebbe persino inserire la possibilità di mettere due allegati se qualche anima pia sa aiutarmi la ringrazio in anticipo
    Tra il dire e il fare c'è di mezzo il mare

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    67
    Testando aggiungo che ricevo tutto il form in modo corretto ma invece dell'allegato mi arriva:

    allegato: C:\\Documents and Settings\\All Users\\Documenti\\Immagini\\Immagini campione\\Ninfee.jpg

    Tra il dire e il fare c'è di mezzo il mare

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    67
    Ho letto attentamente anche questo post ma non riesco salta è come se mancasse un campo da far riconoscere ho provato ad analizzare anche questo codice:

    // Valorizzo le variabili relative all'allegato
    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];

    // Creo 2 variabili che riempirò più avanti...
    $headers = "From: " . $mittente;
    $msg = "messaggio";

    // Verifico se il file è stato caricato correttamente via HTTP
    // In caso affermativo proseguo nel lavoro...
    if (is_uploaded_file($allegato))
    {
    // Apro e leggo il file allegato
    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);

    // Adatto il file al formato MIME base64 usando base64_encode
    $data = chunk_split(base64_encode($data));

    // Genero il "separatore"
    // Serve per dividere, appunto, le varie parti del messaggio.
    // Nel nostro caso separerà la parte testuale dall'allegato
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    // Aggiungo le intestazioni necessarie per l'allegato
    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary=\"{$mime_boundary}\"";

    // Definisco il tipo di messaggio (MIME/multi-part)
    $msg .= "This is a multi-part message in MIME format.\n\n";

    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";

    // Questa è la parte "testuale" del messaggio
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= $messaggio . "\n\n";

    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";

    // Aggiungo l'allegato al messaggio
    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename=\"{$allegato_name}\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $data . "\n\n";

    // chiudo con il separatore
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
    $msg = $messaggio;
    }

    // Invio la mail
    if (mail($destinatario, $oggetto, $msg, $headers))
    {
    echo "

    Modulo inviato correttamente!</p>";
    }else{
    echo "

    ERRORE!</p>";
    }
    ?>


    ma non interagisce magari puo' essere utile
    Tra il dire e il fare c'è di mezzo il mare

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 © 2024 vBulletin Solutions, Inc. All rights reserved.