Visualizzazione risultati 1 fino 10 di 10

Discussione: script php per inviare campi da un form alla mail

  1. #1
    Guest

    Predefinito script php per inviare campi da un form alla mail

    salve a tutti...ho appena inserito una nuova pagina nella mio sito nel quale vorrei ke gli utenti mi inviassero i dati richiesti nel form alla mail...il form è veramente una cavolata ma siccome il mio php è scarsissimo mi chiedevo se qualkuno poteva aiutarmi!
    liko la pagina del form:
    http://trbbl.altervista.org/contattami.html
    grazie in anticipo a ki voglia aiutarmi

  2. #2
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito

    fai postare il form verso una pagina php.
    all'input text dai come name che ne so... TESTOEMAIL.

    e nel php inserisci questa riga (ovviamente inserendo il tuo indirizzo e l'oggetto che vuoi. la mail avrà come mittente apache)
    Codice PHP:
    <?
    mail
    ("tuoindirizzo@dovevuoi.it","oggetto della mail",$HTTP_POST_VARS['TESTOEMAIL']);
    ?>
    Ultima modifica di skydrake : 18-03-2010 alle ore 10.11.09


    Si, la mia firma cambia immagine continuamente! :)

  3. #3
    Guest

    Predefinito

    perdona la mia ignoranza ma credo di non aver capito e le mie conoscenze di php sono molto limitate....guarda questo è il codice del form:

    Codice HTML:
    <form action="invia.php" method="post" enctype="text"> 
    <fieldset> 
    <span class="header2" align="center">Contattami</span> 
    <ul class="pageitem"> 
    	<li class="smallfield"><span class="name">Nome</span><input placeholder="nome e cognome" type="text"/></li> 
    	<li class="smallfield"><span class="name">E-Mail</span><input placeholder="e-mail" type="text"/></li> 
    </ul> 
    </fieldset> 
    <fieldset> 
    <span class="header2" align="center">Scrivi i tuoi suggerimenti o altro...</span>  
    <ul class="pageitem"> 
    	<li class="textbox"><textarea name="TextArea" rows="6"></textarea></li> 
    </ul> 
    <ul class="pageitem"> 
    	<li class="button"> 
    		<input type="submit" value="Invia" /> 
    	</li> 
    </ul> 
    </fieldset> 
    </form>
    io vorrei ke mi arrivasse nella mail tutti i campi: nome email di ki mi contatta e quello ke viene scritto nella TextArea....
    forse è anke da ritoccare il form...se mi delucidi un po di piu ti ringrazio infinitamente...
    Ultima modifica di musicanapoli : 18-03-2010 alle ore 18.33.55 Motivo: Codice racchiuso tra i tags

  4. #4
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito

    Codice HTML:
    <form action="invia.php" method="post" enctype="text"> 
    <fieldset> 
    <span class="header2" align="center">Contattami</span> 
    <ul class="pageitem"> 
    	<li class="smallfield"><span class="name">Nome</span><input placeholder="nome e cognome" type="text" [COLOR="Red"]name="NOME"[/COLOR]/></li> 
    	<li class="smallfield"><span class="name">E-Mail</span><input [COLOR="Red"]name="EMAIL"[/COLOR]placeholder="e-mail" type="text"/></li> 
    </ul> 
    </fieldset> 
    <fieldset> 
    <span class="header2" align="center">Scrivi i tuoi suggerimenti o altro...</span>  
    <ul class="pageitem"> 
    	<li class="textbox"><textarea [COLOR="Red"]name="TextArea"[/COLOR] rows="6"></textarea></li> 
    </ul> 
    <ul class="pageitem"> 
    	<li class="button"> 
    		<input type="submit" value="Invia" /> 
    	</li> 
    </ul> 
    </fieldset> 
    </form>
    in rosso ti ho segnato i name dei vari input. uno lo avevi inserito e te lo lascio così, solo lo evidenzio. gli altri due te li ho inseriti. a cosa serve il nome? quando invii un input tramite post o get il contenuto di questo input viene salvato in una variabile.
    nel nostro caso le variabili in cui vengono salvate saranno
    $HTTP_POST_VARS['NOME']
    $HTTP_POST_VARS['EMAIL']
    $HTTP_POST_VARS['TextArea']

    a questo punto ci serve la pagina php che invii la mail. che tu hai deciso di chiamare invia.php

    Codice PHP:
    <?
    mail
    ("tuoindirizzo@dovevuoi.it","maildaaltervista","l'utente ".$HTTP_POST_VARS['NOME']." avente per email ". $HTTP_POST_VARS['EMAIL']." ti invia questo messaggio: ".$HTTP_POST_VARS['TextArea']);
    ?>
    ovviamente al posto di tuoindirizzo@dovevuoi.it devi mettere il tuo indirizzo email.
    Ultima modifica di skydrake : 18-03-2010 alle ore 20.02.06


    Si, la mia firma cambia immagine continuamente! :)

  5. #5
    Guest

    Predefinito

    Ciao!innanzitutto grazie delle risposte...cmq ho provato ad implementare come mi hai detto tu ma nn mi funge....credo cmq ke il metodo tuo faccia aprime il client della posta per poi inviarla da li la mail oppure la invia direttamente senza passare per il client?ad ogni modo ho trovato questa soluzione in internet ke mi funziona ma nn so perke nella mail mi arrivano solo i campi "from" e "message" ed il campo "name" nn mi arriva....sapresti dirmi il perke??
    questo è l'HTML del FORM (riguardalo perke l'ho modificato leggermente per farlo funzionare insieme allo script):

    Codice HTML:
    <form action="email.php?action=send" method="post">
    <fieldset>
    <span class="header2" align="center">Contattami</span> 
    <ul class="pageitem">
    	<li class="smallfield"><span class="name">E-Mail</span><input name="from" type="text" id="from" placeholder="e-mail"/></li>
    	<li class="smallfield"><span class="name">Nome</span><input name="name" type="text" id="name" placeholder="nome e cognome"/></li>
    </ul>
    </fieldset>
    <fieldset>
    <span class="header2" align="center">Scrivi i tuoi suggerimenti o altro...</span>  
    <ul class="pageitem"> 
    	<li class="textbox"><textarea name="message" rows="6" id="message"></textarea></li> 
    </ul> 
    <ul class="pageitem">
    	<li class="button"> 
    		<input type="submit" value="Send" />
    	</li> 
    </ul>
    </fieldset>
    </form>
    e questo è lo script php:

    Codice PHP:
    <?php
    extract
    ($HTTP_GET_VARS);
    extract($HTTP_POST_VARS);
    if (
    $action == "send")
    {
    include(
    "config.php");
    $to = $ademail; //qui la mia mail presa da config.php
    $from = $_POST['from'];
    $name = $_POST['name'];
    $message = $_POST['message'];

    $to = trim($to);
    $from = trim($from);
    $name = trim($name);
    $message = trim($message);

    if (empty(
    $to))
    {
    $ermessage = "Error: Email address to can not be blank, Please enter your email address in the config file!";
    include(
    "contattamifallito.html"); exit();
    }
    if (empty(
    $from))
    {
    $ermessage = "Error: Email address can not be blank, Please enter your email address!";
    include(
    "contattamifallito.html"); exit();
    }
    if (!
    ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
    '@'.
    '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
    '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $from))
    {
    $ermessage = "Error: Invalid Email address, Please re-enter your email address!";
    include (
    "contattamifallito.html"); exit;
    }
    if (empty(
    $name))
    {
    $ermessage = "Error: Please enter your name!";
    include(
    "contattamifallito.html"); exit();
    }
    if (empty(
    $message))
    {
    $ermessage = "Error: Message body can not be blank, Please enter email message";
    include(
    "contattamifallito.html"); exit();
    }
    $message = $message;
    $send = mail($to, $message, "From: {$from}");
    if (
    $send)
    {
    include(
    "email_sent.htm"); exit();
    }
    else
    {
    $ermessage = "Error: You message has not been sent, please try again";
    include(
    "contattamifallito.html"); exit();
    }
    }
    else
    {
    include(
    "contattami.html");
    }
    ?>
    come vedrai fa anke i controlli per i vari campi ke funzionano bene....ma come ho detto il campo Nome del FORM non mi viene spedito alla mail nella quale mi compare come sender: apache e poi all'interno dell messaggio mi compare il messaggio e from="email del utente"
    ti ringrazio infinitamente se potrai aiutarmi!

    Il codice va inserito dentro i tags [by musicanapoli]
    Ultima modifica di musicanapoli : 18-03-2010 alle ore 22.25.30 Motivo: Codice racchiuso tra i tags

  6. #6
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito

    sostituisci
    $send = mail($to, $message, "From: {$from}");

    con
    $send = mail($to, $message, "Nome: {$name} From: {$from}");


    il mittente sarà sempre apache. è configurato così il servizio della funzione mail di altervista.


    Si, la mia firma cambia immagine continuamente! :)

  7. #7
    Guest

    Predefinito

    cacchio hai ragionissima!!sei un mito!grande grazie!
    ps: scusa musicanapoli nn lo sapevo riguardo il codice....

    EDIT:
    scusa se disturbo ancora....ma ho appena notato ke il campo "message" ke dovrebbe arrivare come messaggio arriva invece in quello ke dovrebbe essere il l'oggetto....ed i campi "from" e "name" arrivano dove dovrebbe comparire il messaggio... xD
    ora...questo secondo particolare mi sta bene....ma io vorrei se fosse possibile ke arrivasse tutto come corpo del messaggio....tipo:

    Nome: pinco pallino From: pincopallino@email.it
    ....messaggio vero e proprio...

    aspetto la tua risposta....grazie mille e scusa ancora...
    EDIT:
    ho risolto....bisogna solo cambiare di posizione i parametri della send e far si ke arrivi un "subjet" vuoto in quanto nn lo voglio....come vedrai nn conoscendo il php mi devo basare sull'intuito xD
    Ultima modifica di andreafallico : 19-03-2010 alle ore 18.52.32 Motivo: Usa il tasto Edita

  8. #8
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito

    come me :P anche io non è che sia un informatico di professione :P
    studente ritardatario di matematica :P


    Si, la mia firma cambia immagine continuamente! :)

  9. #9
    Guest

    Predefinito

    ke importa!l'importante è finire e nel mentre spassarsela un po! xD cmq ti chiedo un'altra cosetta...ora funziona tutto alla perfezione e mi chidevo come far per mettere un controllo captcha in quanto mi è stato detto da un paio di utenti ke è molto utile...magari una immaginetta prima del pulsante "Send"...
    EDIT: eccomi di nuovo ad editare....allora, ho trovato un codice per il captcha in interenet ed è il seguente:
    Codice:
    <?php
    session_start();
    
    define("NONE", 0);
    define("EASY", 30);
    define("MEDIUM", 50);
    define("HARD", 80);
    define("VERY_HARD", 100);
    
    define("POINT", 1);
    define("LINE", 2);
    
    	/* dimensioni */
    	$x = 200; //larghezza
    	$y = 80; //altezza
    
    	$image = imagecreatetruecolor($x, $y); //creo l'immagine
    	
    	$color = array();
    	$color[] = imagecolorallocate($image, 255, 0, 0); 
    	$color[] = imagecolorallocate($image, 0, 255, 0); 
    	$color[] = imagecolorallocate($image, 0, 0, 255); 
    	$color[] = imagecolorallocate($image, 255, 255, 0);
    	$color[] = imagecolorallocate($image, 255, 0, 255);
    	$color[] = imagecolorallocate($image, 255, 255, 255); 
    	$color[] = imagecolorallocate($image, 0, 255, 255); 
    	
    	$font = array();
    	$font[] = "font/arial.ttf";
    	$font[] = "font/abbeyroad_regular.ttf";
    	$font[] = "font/roman_sd_regular.ttf";
    	$font[] = "font/elephants_in_cherry_trees_normal.ttf";
    	
    	$black = imagecolorallocate($image, 0, 0, 0);
    	imagefill($image, 0, 0, $black); 
    	add_noise($image, EASY, LINE, $x, $y); //aggiungo il disturbo
    	
    	$_SESSION['CAPTCHA'] = strtolower(getString()); //genero la nuova stringa
    	
    	for($i = 0;$i < strlen($_SESSION['CAPTCHA']); $i++) { 
    		/* per ogni lettera applico impostazioni diverse (dimensione, angolo, colore, font) */
    		imagettftext(
    			$image, //immagine
    			20 + rand(0, 6),  //dimensione carattere
    			rand(-35, 35), //angolo di rotazione
    			($i+1)*26, //offset sulla x
    			45+ rand(0, 4), //offset sulla y
    			$color[rand(0, count($color)-1)], //colore
    			$font[rand(0, count($font)-1)], //carattere
    			$_SESSION['CAPTCHA'][$i] //lettera da stampare
    		);
    	}
    
    	header("Content-type: image/png");
    
    	imagepng($image); 
    	imagedestroy($image);
    
    
    function getString() {
    	$str = base64_encode(time());
    	$str = str_replace("=", "", $str); //elimino gli =
    	$str = str_shuffle($str);
        return substr($str, 0, 6);
    }
    
    function add_noise($image, $difficoult, $figure, $x, $y) {
    	if($figure == 1)
    		$difficoult *= 15; //i punti devono essere più delle linee per generare un disturbo significativo
    		
    	for($i = 0; $i < $difficoult; $i++) { 
    		$color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
    		$p = rand(0, 10);
    		$x1 = rand($p, rand($x - $p, $x-1)); 
    		$x2 = rand($p, rand($x - $p, $x-1)); 
    		$y1 = rand($p, rand($y - $p, $y-1));
    		$y2 = rand($p, rand($y - $p, $y-1));
    		
    		switch($figure) {
    			case 1:
    				imageline($image, $x1, $y1, $x1, $y1, $color); 
    				break;
    			default:
    				imageline($image, $x1, $y1, $x2, $y2, $color); 
    				break;
    		}
    	}
    	
    }
    ?>
    ed ho inserito come come controllo per il captcha nel precedente script (email.php) il seguente pezzo di codice:
    Codice:
    if(isset($_POST['cpt']) && !empty($_POST['cpt'])){
    	if($_SESSION['CAPTCHA'] != strtolower($_POST['cpt'])){
    		include("contattamifallito.html"); exit();} //il codice nn è corretto
    }
    }
    ma nn funziona!!mi puoi aiutare???quale sarebbe il codice di controllo giusto per il captcha?(da inserire nello script di qualke post fa (email.php).grazie!
    Ultima modifica di trbbl : 19-03-2010 alle ore 17.37.20

  10. #10
    Guest

    Predefinito

    Scusate se non sono nel post giusto ma è la prima volta che posto in questo forum. Ho il seguente form:

    <form id="form1" name="form1" method="post" action="Invio2.php">
    <table width="600" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td><div align="left"><img src="immagini/logoSpa.gif" width="33" height="45" align="absmiddle" /> <span class="Stile23">Modulo di Richiesta Intervento Tecnico</span><br />
    <br />
    Compilate nei suoi campi il modulo per richiedere l'intervento di un nostro tecnico sulla vostra caldaia. Sarete contattati nel giro di 24 ORE per poter concordare le modalità di assistenza.<br />
    <br />
    </div></td>
    </tr>
    <tr>
    <td><table width="600" cellspacing="0" cellpadding="0">
    <tr>
    <td>Ragione Sociale:</td>
    <td><span id="sprytextfield1">
    <label>
    <input type="text" name="ragioneSociale" id="ragioneSociale" />
    </label>
    <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span></span>*</td>
    </tr>
    <tr>
    <td>Indirizzo:</td>
    <td><span id="sprytextfield2">
    <label>
    <input type="text" name="indirizzo" id="indirizzo" />
    * </label>
    <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span></span></td>
    </tr>
    <tr>
    <td>Comune:</td>
    <td><span id="sprytextfield3">
    <label>
    <input type="text" name="comune" id="comune" />
    * </label>
    <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span></span></td>
    </tr>
    <tr>
    <td>Provincia:</td>
    <td><label>
    <input type="text" name="provincia" id="provincia" />
    </label></td>
    </tr>
    <tr>
    <td>CAP:</td>
    <td><label>
    <input type="text" name="cap" id="cap" />
    </label></td>
    </tr>
    <tr>
    <td>Telefono:</td>
    <td><span id="sprytextfield4">
    <label>
    <input type="text" name="telefono" id="telefono" />
    </label>
    <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span><span class="textfieldInvalidFormatMsg">Formato non valido.</span></span>*</td>
    </tr>
    <tr>
    <td><label>Email:</label></td>
    <td><span id="sprytextfield5">
    <label>
    <input type="text" name="email" id="email" />
    * </label>
    <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span><span class="textfieldInvalidFormatMsg">Formato non valido.</span></span></td>
    </tr>
    <tr>
    <td>Intervento:</td>
    <td><p>
    <label></label>
    <span id="spryselect1">
    <label>
    <select name="intervento" id="intervento">
    <option>in garanzia</option>
    <option>in contratto</option>
    <option>a pagamento</option>
    </select>
    </label>
    <span class="selectRequiredMsg">Selezionare una voce.</span></span>*<br />
    </p></td>
    </tr>
    <tr>
    <td>Tipo di Intervento:</td>
    <td><span id="spryselect2">
    <label>
    <select name="tipo" id="tipo">
    <option>urgente</option>
    <option>non urgente</option>
    </select>
    </label>
    <span class="selectRequiredMsg">Selezionare una voce.</span></span>*</td>
    </tr>
    <tr>
    <td>Motivi della Richiesta di Intervento:</td>
    <td><span id="spryselect3">
    <label>
    <select name="motivo" id="motivo">
    <option>Prima accensione</option>
    <option>Controllo caldaia</option>
    <option>Non arriva acqua calda</option>
    <option>Mancanza di acqua</option>
    <option>Caldaia in blocco</option>
    <option>Esagerato aumento pressione dell'acqua</option>
    <option>La caldaia perde acqua</option>
    <option>Non si avvia la caldaia</option>
    <option>Altro</option>
    </select>
    </label>
    <span class="selectRequiredMsg">Selezionare una voce.</span></span>*</td>
    </tr>
    <tr>
    <td>Modello Caldaia:</td>
    <td><span id="sprytextfield6">
    <label>
    <input type="text" name="caldaia" id="caldaia" />
    </label>
    <span class="textfieldRequiredMsg">È obbligatorio specificare un valore.</span></span>*</td>
    </tr>
    <tr>
    <td>Commento</td>
    <td><span id="sprytextarea1">
    <label>
    <textarea name="testo" id="testo" cols="45" rows="5"></textarea>
    <span id="countsprytextarea1">&nbsp;</span> </label>
    <span class="textareaRequiredMsg">È obbligatorio specificare un valore.</span><span class="textareaMaxCharsMsg">Numero massimo di caratteri superato.</span></span></td>
    </tr>
    <tr>
    <td>* campi obbligatori</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    </table></td>
    </tr>
    <tr>
    <td><label>
    <div align="center">
    <input type="submit" name="invia" id="invia" value="Invia" />
    </div>
    </label></td>
    </tr>
    </table>
    </form>

    da collegare alla pagina invio2.php:

    <?php
    function checkOK($field)
    {
    if (eregi("\r",$field) || eregi("\n",$field)){
    die("Invalid Input!");
    }
    }

    $ragioneSociale = $_POST['ragioneSociale'];
    checkOK($ragioneSociale);
    $indirizzo = $_POST['indirizzo'];
    checkOK($indirizzo);
    $comune = $_POST['comune'];
    checkOK($comune);
    $provincia = $_POST['provincia'];
    checkOK($provincia);
    $cap = $_POST['cap'];
    checkOK($cap);
    $telefono = $_POST['telefono'];
    checkOK($telefono);
    $email = $_POST['email'];
    checkOK($email);
    $caldaia = $_POST['caldaia'];
    checkOK($caldaia);
    $testo = $_POST['testo'];
    checkOK($testo);
    $utente = $ragioneSociale;
    $to = "rigenerazione@tecnograph.net";
    $message = "$utente ha richiesto l'intervento di un tecnico. I suoi dati sono:\n\n Indirizzo: $indirizzo\n\n Comune: $comune\n\n Provincia: $provincia\n\n Cap: $cap\n\n Telefono: $telefono\n\n Email: $email\n\n Modello Caldaia: $caldaia\n\n Motivo Richiesta Intervento: $testo\n\n ";
    if (mail($to,"Commenti dal tuo sito web",$message,"From: $email\n")) {
    echo "";
    } else {
    echo "Si &egrave; verificato un problema nello spedire la richiesta di assistenza. Per favore, controlla di aver compilato correttamente tutti i campi del modulo, grazie!.";
    }
    ?>


    L'unica cosa che mi manca da aggiungere al codice php è la lettura delle opzioni dei tasti di scelta "intervento","tipo" e "motivo" così che vengano scritti nella mail che mi arriva.

    Grazie per chiunque voglia aiutarmi.

Regole di scrittura

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