0

PHP コードに問題があります。IF-ELSE を使用してすべてが正常に動作することを確認しますが、「受信者が入力されていません」というメッセージが表示され続けます。

<?php

$to=trim($_POST['toperson']);
$from=trim($_POST['spoofrom']);
$message=trim($_POST['message']);
$subject=trim($_POST['subj']);


if (substr_count($to, '@') <= 1 ) {
    if (!isset($to)) {
        if (!isset($from)) {
            if (!isset($subject)) {
                if (!isset($message)) {
                    mail($to, $subject, $message, "From: " . $from);
                    print "Message was sent!";
                }else {print "You did not enter a message";} 
            }else {print "You did not enter a subject";}
        }else {print "You did not enter a from email";}
    }else {print "You did not enter a recipient";}
}else{print "You entered 2 or more emails.";}

?>
4

4 に答える 4

1

試す

if (!isset($to))条件を次のように置き換えif (isset($to)) 、空のチェックを追加します

ドキュメント: http://php.net/manual/en/function.isset.php

http://www.php.net/manual/en/function.empty.php

このような:

if (substr_count($to, '@') <= 1 ) {
    if (isset($to) && !empty($to)) {
        if (isset($from) && !empty($from)) {
            if (isset($subject) && !empty($subject)) {
                if (isset($message) && !empty($message)) {
                    mail($to, $subject, $message, "From: " . $from);
                    print "Message was sent!";
                }else {print "You did not enter a message";} 
            }else {print "You did not enter a subject";}
        }else {print "You did not enter a from email";}
    }else {print "You did not enter a recipient";}
}else{print "You entered 2 or more emails.";}
于 2013-04-06T12:09:10.747 に答える
0

すべてのフォーム データが空の場合、コードはメールを送信します。 if(!isset($_POST["something"]) データが設定されていない場合、条件付きプロセスが起動することを意味します。

感嘆符を削除します。

于 2013-04-06T12:14:59.877 に答える
0

正規表現 &| を使用して、フォームが適切に検証されていることを確認してください。フォーム送信前の html5/css3。最後に !empty() と isset() を使用してください。

if (mail($to, $subject, $message, "From: " . $from)) { 
   print "Message was sent!";
} else { print "email failed to send!"; }

また、変数を呼び出すのではなく、変数を設定するときに From: を配置しますが、それはより個人的な好みです。

$from= "From: trim($_POST['spoofrom'])";
于 2016-10-07T15:59:58.550 に答える
0

最終的には、 isset() ではなく empty() が常に設定されているため、常に満たされているとは限らないことを意味しますか?

または、 ifisset($_POST['to'])と他のキーを確認しますが、割り当てられた変数で isset を使用しないでください (チェックis_null/の=== null方が良いです

于 2013-04-06T12:08:00.070 に答える