3

2 つのラジオ ボタンがあるお問い合わせフォームがあります。しかし、選択したラジオボタンに従ってクライアントにメッセージを表示する必要があります。クライアントが YES ラジオ ボタンを選択して [送信] を押すと、「よかったです! I see you there!」というメッセージが表示されます。選択したオプションが記載されたメールが届きます。[いいえ] ラジオ ボタンと同じですが、メッセージとして「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>';
}

動かない。実際、ユーザーが「いいえ」ラジオボタンを選択すると正しいメッセージを受け取りますが、「はい」ラジオボタンを選択すると間違ったメッセージ(エラーメッセージ)を受け取りますが、フォームメールは正常に受信します...

編集 OK!できます!これが私がした方法です:

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>";

}

正しくコーディングされているかどうかはわかりませんが、機能しています...

4

1 に答える 1

5

これらの行は、予期しない結果につながります。

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

このメソッドは、値を$rsvpそれぞれ 'YES' と 'NO' に設定するだけです。等価性をテストするには、比較演算子を使用する必要があります==

if($rsvp == 'YES'){

if($rsvp == 'NO'){
于 2011-07-12T19:34:50.547 に答える