【问题标题】:Break an if/else statement if condition is not met如果不满足条件,则中断 if/else 语句
【发布时间】:2016-05-18 02:43:39
【问题描述】:

我有一个使用 php 处理的表单,它可以工作,除非条件不满足。我没有使用 captia,而是隐藏了一个普通字段。该过程仅在隐藏字段为 = 无的情况下才假定运行。否则它应该会破裂。如果 $hide (hidden field) = nothing 则有效,但在填写该字段时会引发错误。

<?php
$to      = 'test@test.com';
$email   = $_POST['email'];

$name  = $_POST['name'];
$subject = $_POST['subject'];
$message = $_POST['comments'];
$hide = $_POST['message'];
$error=array();
if ($hide!=''){
    break;
}else{
    if($_POST['name']==''){
        $error[]="Your name is required";
    }
    if($_POST['email']==''){
        $error[]="Your email is required";
    }
    if($_POST['subject']==''){
        $error[]="Subject is required";
    }
    if($_POST['comments']==''){
        $error[]="Comments is required";
    }

    if(count($error)>0){
        echo "<div class='alert alert-danger'>";
        foreach($error as $data)
        {
            echo "<p>".$data."</p>";
        }
        echo "</div>";
        die();
    }

    $headers = 'From: Attorney Website'. '<'.$email.'>' . "\r\n" .
        'Reply-To: '. $email . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    if(mail($to, $subject, $message, $headers))
    {
        echo "<div class='alert alert-success'>You message has been succesfully received. We will reply you soon.</div>";
        die();
    } else {
        echo "<div class='alert alert-danger'>Opps! Something went wrong. Please try again.</div>";
        die();
    }
}
?>

【问题讨论】:

  • 你想在第一个if 块中“打破”来自的什么?如果该块中无事可做,则将其留空。或者,更好的是,反转条件(使用== 而不是!=)并且只有一个条件块,而不是将所有逻辑放在else 块中。
  • break 不适用于 if 语句,请参阅 documentation。即使确实如此,无论如何您对它的使用(至少在您的示例中)似乎都是多余的。
  • 好的,谢谢,我会这样做的
  • 你不需要使用break

标签: php if-statement


【解决方案1】:

你不需要使用break

替换:

if ($hide!=''){
    break;
}
else {

只有

if ($hide) {
   // run email code

这将确保 $hide 在继续之前包含某些内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多