• User Newbie

    Messaggio di avvenuto invio mail

    Ciao a tutti,

    Sono nuovo del forum e anche della programmazione php. Ho ereditato la gestione di un sito in cui c'è un form per l'invio della richiesta di informazioni tramite mail che richiama le seguenti istruzioni php. Dato che di php ci capisco poco vorrei chiedervi come e dove inserire un eventuale messaggio "La mail è stata inviata con successo. Grazie per averci contattato" da visualizzare nella pagina index.html. o in una nuova pagina e poi reindirizzare alla index.html. Ho provato a guardare un po' in giro per il web e provato ad inserire le seguenti istruzioni nel codice php ma non viene mai visualizzato niente...

    echo "La mail è stata inviata con successo. Grazie per averci contattato";
    header("refresh:2;url=index.html")

    Potete aiutarmi?
    Grazie.

    <?php

    /* config start */

    $emailAddress = '[email protected]';

    /* config end */

    require "phpmailer/class.phpmailer.php";

    session_name("fancyform");
    session_start();

    foreach($_POST as $k=>$v)
    {
    if(ini_get('magic_quotes_gpc'))
    $_POST[$k]=stripslashes($_POST[$k]);

    $_POST[$k]=htmlspecialchars(strip_tags($_POST[$k]));
    

    }

    $err = array();

    if(count($err))
    {
    if($_POST['ajax'])
    {
    echo '-1';
    }

    else if($_SERVER['HTTP_REFERER'])
    {
    	$_SESSION['errStr'] = implode('<br />',$err);
    	$_SESSION['post']=$_POST;
    	header('Refresh:3; Location: '.$_SERVER['HTTP_REFERER']);
    }
    
    
    exit;
    

    }

    $msg=
    'Nome: '.$_POST['first_name'].'<br />
    Email: '.$_POST['email'].'<br />
    Telefono: '.$_POST['phone_number'].'<br />
    Oggetto: '.$_POST['subject'].'<br />
    IP: '.$_SERVER['REMOTE_ADDR'].'<br /><br />

    Messaggio:<br /><br />

    '.nl2br($_POST['text']).'

    ';

    $mail = new PHPMailer();
    $mail->IsMail();

    $mail->AddReplyTo($_POST['email'], $_POST['first_name']);
    $mail->AddAddress($emailAddress);
    $mail->SetFrom($_POST['email'], $_POST['first_name']);
    $mail->Subject = "Nuova richiesta di ".$_POST['subject']." da ".$_POST['first_name']." | contact form chef4all.it";

    $mail->MsgHTML($msg);

    $mail->Send();

    unset($_SESSION['post']);

    if($_POST['ajax'])
    {
    echo '1';
    }
    else
    {
    $_SESSION['sent']=1;

    if($_SERVER['HTTP_REFERER'])
    	header('Location: '.$_SERVER['HTTP_REFERER']);
    exit;
    

    }

    function checkLen($str,$len=2)
    {
    return isset($_POST[$str]) && mb_strlen(strip_tags($_POST[$str]),"utf-8") > $len;
    }

    function checkEmail($str)
    {
    return preg_match("/^[.A-z0-9_-+]+[@][A-z0-9_-]+([.][A-z0-9_-]+)+[A-z]{1,4}$/", $str);
    }

    ?>


  • User Attivo

    Ciao Pit77,
    sostituisci
    [PHP]$mail->Send();[/PHP]
    con [PHP]if($mail->Send()){
    header("refresh:2;url=index.html");
    echo "La mail è stata inviata con successo. Grazie per averci contattato";
    } else {
    echo "Qualcosa è andato storto.";
    }[/PHP]
    Ti ho scambiato la funzione header con l'echo, perché non puoi inviare un header dopo aver già stampato qualcosa a schermo.

    Luca


  • User Newbie

    Ciao Luca, grazie per la risposta. Avevo già provato in questo modo ma purtroppo viene eseguito solo l'header e non stampa nulla, quindi mi fa vedere una pagina bianca per due secondi e poi mi reindirizza all'index...

    @lucabartoli said:

    Ciao Pit77,
    sostituisci
    [PHP]$mail->Send();[/PHP]
    con [PHP]if($mail->Send()){
    header("refresh:2;url=index.html");
    echo "La mail è stata inviata con successo. Grazie per averci contattato";
    } else {
    echo "Qualcosa è andato storto.";
    }[/PHP]
    Ti ho scambiato la funzione header con l'echo, perché non puoi inviare un header dopo aver già stampato qualcosa a schermo.

    Luca


  • User Attivo

    E' strano perché dopo gli header dovrebbe essere processato tutto il resto. Mi viene il dubbio che hai qualche errore, prova ad inserire questo codice all'inizio del tuo script:
    [PHP]error_reporting(E_ALL);ini_set('display_errors', '1');
    [/PHP]
    Ti esce qualcosa?