(PHP) Различные значения для различных значений в HTML-форме - PullRequest
3 голосов
/ 12 июля 2011

У меня есть контактная форма с двумя переключателями.Но мне нужно показывать сообщения клиенту в соответствии с выбранным переключателем.Я постараюсь объяснить лучше: если клиент выберет радиокнопку YES и нажмет submit, появится сообщение "Отлично! Я тебя там вижу!"и я получу электронное письмо с выбранной опцией. То же самое с переключателем «НЕТ», но в качестве сообщения появится «C'mon ...».

Вот php, который я имею:

<?php
if(isset($_POST['enviar'])) {
    $remetente = "email@domain.com"; 
    $destinatario = "email@domain.com";
    $assunto = "Subject";
    $data = date("d/m/y");
    $hora = date("H:i");
    $charset = $_POST['charset'];
    $nome = $_POST['nome'];
    $email = $_POST['email'];

    //This is the radio button value that i want to put conditionals.
    $rsvp = $_POST['rsvp'];
    $navegador = $_SERVER['HTTP_USER_AGENT'];
    $ip = $_SERVER['REMOTE_ADDR'];
    $corpo = utf8_decode("Data: ".$data."<br />Hora: ".$hora."<br />Nome: ".$nome."<br />E-mail: ".$email."<br />Ip: ".$ip."<br />Browser: ".$navegador."<br />RSVP: ".$rsvp."\r\n");

    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=".$charset."\r\n";
    $headers .= "Reply-To: ".$remetente."\r\n";

    $headers .= "From: ".$remetente."\r\n";


    //This is the part that i think it has to be changed.
    if(mail($destinatario, $assunto, $corpo, $headers)) {
        echo '<meta http-equiv="refresh" content=0;url=message_sended.php/>';
    } else {
        echo '<meta http-equiv="refresh" content=0;url=error.php/>';
    }
} else {
    echo '<meta http-equiv="refresh" content=0;url=error.php/>';
}
?>

Я пробовал это, но не работает:

    if(mail($destinatario, $assunto, $corpo, $headers) ) {
        if($rsvp = 'YES'){
            echo '<meta http-equiv="refresh" content=0;url=message_sended_YES.php/>';
        } else {
            echo '<meta http-equiv="refresh" content=0;url=error.php/>';
        }
    } else {
        echo '<meta http-equiv="refresh" content=0;url=error.php/>';
    }

    if($rsvp = 'NO'){
        echo '<meta http-equiv="refresh" content=0;url=message_sended.php_NO/>';
    } else {
        echo '<meta http-equiv="refresh" content=0;url=error.php/>';
    }
} else {
    echo '<meta http-equiv="refresh" content=0;url=error.php/>';
}

Тогда я сделал это:

if(mail($destinatario, $assunto, $corpo, $headers)) {
    if($rsvp == 'sim'){
        echo '<meta http-equiv="refresh" content=0;url=sim.php>';
    } 
    else
    {
        echo '<meta http-equiv="refresh" content=0;url=contato_mensagem_erro.php>';
    }
}   
else 
{
    echo '<meta http-equiv="refresh" content=0;url=contato_mensagem_erro.php>';
}

if($rsvp == 'nao'){
    echo '<meta http-equiv="refresh" content=0;url=nao.php>';
} 
else
{
    echo '<meta http-equiv="refresh" content=0;url=contato_mensagem_erro.php>';
}
}   
else 
{
echo '<meta http-equiv="refresh" content=0;url=contato_mensagem_erro.php>';
}

Не работает.На самом деле, когда пользователь выбрал радиокнопку «нет», он получает правильное сообщение, но когда он выбрал радиокнопку «да», он получает неправильное сообщение (сообщение об ошибке), но я получаю электронное письмо формы ...1012 *

Редактировать Хорошо!Оно работает!Вот как я это сделал:

if(mail($destinatario, $assunto, $corpo, $headers)) {

if($rsvp == "sim"){

   echo 

     header('Location: sim.php/');

} 

else

{

   echo "<meta http-equiv='refresh' content=0;url=contato_mensagem_erro.php>";

}

}   

else 

{

   echo "<meta http-equiv='refresh' content=0;url=contato_mensagem_erro.php>";

}

if($rsvp == "nao"){

   echo header('Location: nao.php/');

} 

else

{

   echo "<meta http-equiv='refresh' content=0;url=contato_mensagem_erro.php>";

}

}   

else 

{

   echo "<meta http-equiv='refresh' content=0;url=contato_mensagem_erro.php>";

}

Я действительно не знаю, правильно ли он закодирован, но он работает ...

1 Ответ

5 голосов
/ 12 июля 2011

Эти строки приведут к неожиданным результатам:

if($rsvp = 'YES'){
if($rsvp = 'NO'){

Этот метод просто установит для $rsvp значения 'YES' и 'NO' соответственно.Чтобы проверить эквивалентность, вы должны использовать оператор сравнения ==:

if($rsvp == 'YES'){

и

if($rsvp == 'NO'){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...