Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106

    Warning: mail() [function.mail]:

    Ho voluto provare a realizzare un form che tramite una pagina riepilogo.php facesse visualizzare i campi compilati dall'utente in modo che l'utente potesse decidere di spedire la mail tramite il file elabora_form.php oppure di tornare indietro per ricompilare i campi: posto tutti e tre i file:

    form.html:

    <form name="modulo" action="riepilogo.php" method="post">
    <table>
    <tr>
    <td>Nome utente:</td><td><input type="text" name="nome" size="20"></td>
    </tr>
    <tr>
    <td>Indirizzo email:</td><td><input type="text" name="indirizzo" size="20"></td>
    </tr>
    <tr>
    <td>Motivo del contatto:</td>
    <td>
    <select name="motivo">
    <option value="commerciale">Informazioni commerciali</option>
    <option value="preventivo">Richiesta preventivo</option>
    <option value="appuntamento">Prenotazione appuntamento</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>Note:</td><td><textarea name="testo" cols="20" rows="7"></textarea></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" value="Invia email"></td>
    </tr>
    </table>
    </form>

    riepilogo.php

    Riepilogo campi:
    <?php
    echo "nome: $_POST[nome]
    ";
    echo "indirizzo: $_POST[indirizzo]
    ";
    echo "motivo del contatto: $_POST[motivo]
    ";
    echo "testo inserito: $_POST[testo]

    ";
    echo "se i campi sono stati compilati correttamente clicca sul pulsante sottostante altrimenti clicca su torna indietro per reinserire i dati

    ";
    echo "<p align=center><a href=elabora_form.php>Invia i dati</a></p>";
    echo "<p align=center><a href=form.html>Torna indietro</a></p>";
    ?>

    elabora_form.php

    <?
    include("riepilogo.php");
    $colore_sfondo="#82C0FF";
    $colore_testo="#FFFF80";
    $font="verdana";
    $font_size=2;
    $intestazioni = "MIME-Version: 1.0\r\n";
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $intestazioni .= "From: Kronohweb<kronoh2@libero.it>\r\n";
    $messaggio="<html><head><title></title></head><body bgcolor=\"$colore_sfondo\">";
    $messaggio.="<font face=\"$font\" size=\"$font_size\" colore=\"$colore_testo\">Questa email ti è stata inviata dal sito.
    L'utente $_POST[nome] (a cui puoi rispondere a: <a href=\"mailto:$_POST[indirizzo]\">$_POST[indirizzo]</a>, ti ha contattato per motivi di $_POST[motivo].
    Ti ha scritto: $_POST[testo]</font>";
    $messaggio.="</body></html>";
    mail("kronoh2@libero.it", "Invio email da: $_POST[nome]", $messaggio,$intestazioni);
    ?>

    il passaggio delle variabili da form.html a riepilogo avviene senza problemi funzionano anche i link per tornare indietoe andare alla pagina elabora_form.php.
    Il problemasta nel fatto che quando clicco sul link per andare su elabora_form.php sulla pagina riepilogo sotto i link mi da questo errore:

    Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Programmi\Apache Group\Apache2\htdocs\web-link\elabora_form.php on line 13

    come se cercasse l'smtp dal mio computer, come mai come dovrei modificarlo?

    Grazie anticipatamente
    Davide
    Il sapere appartiene al mondo

  2. #2
    Utente di HTML.it L'avatar di iox84
    Registrato dal
    May 2004
    Messaggi
    754
    Devi settare il file php.ini con un SMTP server valido, su che sistema operativo sei?
    La fortuna e' cieca ma la sfiga ci vede benissimo
    Comprarselo o farselo di legno

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    ma io lo sto provando in locale, su windows xp professional, ma quando il file lo provo in linea, ad esempio su Aruba, devo settarlo pure lì? o non c'è bisogno?
    Il sapere appartiene al mondo

  4. #4
    Utente di HTML.it L'avatar di iox84
    Registrato dal
    May 2004
    Messaggi
    754
    Sul server remoto dovrebbeessere tutto a posto, fai una prova.
    Per provare in locale puoi dare un'occhiata qui:
    http://forum.html.it/forum/showthrea...hreadid=831626
    oppure settare la direttiva SMTP del php.ini con il server smtp che usi per spedire la posta dal tuo PC io ad esempio uso mail.tin.it e funzia
    La fortuna e' cieca ma la sfiga ci vede benissimo
    Comprarselo o farselo di legno

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    Grazie della risposta, in linea funziona, o almeno credo, visto che l'errore non mi è spuntato, però ancora aspetto la conferma perchè l'email non mi è ancora arrivata; mi servirebbe un ultimo aiuto, per completare il lavoro, vorrei che quando l'utente clicchi su "invia i dati" gli venga data una conferma dell'avvenuto invio. Potrei semplicemente inserire un
    echo "i dati sono stati spediti correttamente";
    all'interno della pagina elabora_form.php subito dopo la funzione mail, ma vorrei realmente ottenere questo messaggio se i dati realmente sono riusciti a partire, credo quindi che dovrei utilizzare un if con la funzione mail() dicendo che se questa e vera allora visualizza la frase, ma ho un po le idee confuse...
    Un suggerimento?
    Il sapere appartiene al mondo

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    allore, il mio lavoro non funziona, o meglio funziona a metà, cioè in linea, le pagine non mi danno nessun errore, il problema è che la mail mi arriva vuota, cioè non acchiappa le variabili da riepilogo.php, inserito tramite "include" su elabora_form.php, oltre a questo non prende completamente in considerazione la formattazione html, sto uscendo pazzo, capisco che il problema è concettuale...
    se potreste dare un occhiata alle tre pagine postate sopra...
    Il sapere appartiene al mondo

  7. #7
    Utente di HTML.it L'avatar di iox84
    Registrato dal
    May 2004
    Messaggi
    754
    Il tuo ragionamento e' corretto.
    da php.net:
    mail() restituisce TRUE se la mail è stata accettata per la spedizione con successo, altrimenti restituisce FALSE.

    quindi devi fare una cosa del tipo:
    codice:
    if(mail(tutti i tuoi parametri)){
     echo "la mail e' stata inviata";
    }else{
     echo "la mail non e' stata inviata";
    }
    Il problema della mail vuota e' che da riepilogo.php a elabora_form.php non passi i dati contenuti in $_POST, puoi compilare una form con campi hidden (con gli stessi nomi di campi della pagina html) in riepilogo.php che invia i dati a elabora_form.php cliccando sul link "invia i dati", occhio pero' che se e' un link devi usare javascript per mandare la form alla pagina successiva.
    La fortuna e' cieca ma la sfiga ci vede benissimo
    Comprarselo o farselo di legno

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    non ho compreso bene i passaggi che devo fare, vediamo se ho compreso bene:

    devo passare le varibili del form da riepilogo.php a elabora_form.php, cosa che per ora non faccio(mi ha ingannato il fatto di usare l'include, ma in quel caso l'include ha solo lo scopo di "stampare" il contenuto del file riepilogo.php)mi hai detto di passarli utilizzando hidde, se potresti farmi un'esempio mi aiuteresti molto...
    Per quanto riguarda il link, potrei anche utilizzare un pulsante se la cosa diventa più facile, ma nel caso volessi utilizzare il link, come dovrei passare alla pagina seguente tramite javascriptscript?
    grazie comunque per la pazienza...
    Il sapere appartiene al mondo

  9. #9
    Utente di HTML.it L'avatar di iox84
    Registrato dal
    May 2004
    Messaggi
    754
    Prova a cambiare la tua pagina riepilogo.php con questa:

    codice:
    Riepilogo campi:
    <?php
    echo "nome: ".$_POST['nome']." 
    ";
    echo "indirizzo: ".$_POST['indirizzo']." 
    ";
    echo "motivo del contatto: ".$_POST['motivo']."
    ";
    echo "testo inserito: ".$_POST['testo']."
    
    ";
    echo "se i campi sono stati compilati correttamente clicca sul pulsante sottostante altrimenti clicca su torna indietro per reinserire i dati
    
    ";
    echo "<form action=\"elabora_form.php\" method=\"post\">";
    echo "<p align=center><input type=\"submit\" name=\"invia\" value=\"invia\"></p>";
    echo "<p align=center><a href=form.html>Torna indietro</a></p>";
    echo "<input type=\"hidden\" name=\"nome\" value=\"".$_POST['nome']."\">";
    echo "<input type=\"hidden\" name=\"indirizzo\" value=\"".$_POST['indirizzo']."\">";
    echo "<input type=\"hidden\" name=\"motivo\" value=\"".$_POST['motivo']."\">";
    echo "<input type=\"hidden\" name=\"testo\" value=\"".$_POST['testo']."\"";
    echo "</form>";
    ?>
    Se non ci sono errori di sintassi dovrebbe funzionare
    La fortuna e' cieca ma la sfiga ci vede benissimo
    Comprarselo o farselo di legno

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    Grazie per l'aiuto, così va molto meglio, ora però vorrei che questo if funzionasse meglio...

    if (mail("kronoh2@libero.it", "Invio email da: $_POST[nome]", $messaggio,$intestazioni)) {
    echo "la tua mail è stata spedita correttamente"; }
    else {
    echo "la tua mail non è completa torna indietro per riempire tutti i campi".
    Vedo di provare a realizzarlo, se comunque hai un po di tempo a disp. postami la tua soluzione...
    Il sapere appartiene al mondo

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.