【问题标题】:PHP IF ELSE statement not executing properlyPHP IF ELSE 语句未正确执行
【发布时间】:2019-08-28 18:17:01
【问题描述】:

我有一个 html 表单和一个 php 脚本来处理表单的输入以进行验证,但我面临一个问题。如果表单为空,则不会执行 if 语句中的第一个标头 header("Location: error.html?mailerror");,而是直接执行 elseif 语句中的标头 header("Location: thanks.html?mailsend");。我编写了这个 php 验证脚本以确保用户不会提交空表单,但它似乎无法正常工作。如果你能帮助我,真的很感激。

我尝试在第一个 if 语句中放置一个回显,并且它可以正确执行,例如,当用户提交一个空表单时,它会回显“请填写所有字段”现在我正在尝试放置一个指向的标题到 error.html 文档。这就是为什么我将 echo 替换为 header,就像 else if 语句一样,唯一的区别是它指向 error.html 页面。

<?php
 if(isset($_POST['submit'])){
     $salutation=$_POST['salutation'];
     $name=$_POST['name'];
     $subject=$_POST['subject'];
     $contact=$_POST['contact'];
     $mailFrom=$_POST['mail'];
     $date=$_POST['date'];
     $event=$_POST['event'];
     $address=$_POST['address'];

 /* If form IS empty it will execute the code below */     
   if(empty($salutation)||empty($name)||empty($subject)||empty($contact)||empty($mail)||empty($date)||empty($event)||empty($address)){
        header("Location: error.html?mailerror");
     }

/* If the form is NOT empty it will execute the code below */    
 elseif(!empty($salutation)||empty($name)||empty($subject)||empty($contact)||empty($mail)||empty($date)||empty($event)||empty($address))

     $mailTo="test@fairus-test-site.webstarterz.com";
     $headers="From: ".$mailFrom;
     $txt = "You have receive a booking from\n".$salutation." ".$name."\nContact Number: ".$contact.".\nEvent Date: ".$date.".\nType of Event: ".$event.".\nPackage Selected : ".$subject.".\nEvent Address: ".$address;

     mail($mailTo,$subject,$txt,$headers);
     header("Location: thanks.html?mailsend");

 }

一旦用户点击提交,即使表单为空,它也会执行第二个 if else 语句

【问题讨论】:

  • 使用header后需要退出,程序无法继续运行。
  • 你的elseif( ... )不应该是else吗?
  • $mail 应该是 $mailFrom 吧?
  • 如果 !只计算第一个 empty() 替换为 else
  • 您的问题是缺少括号,其中包含满足条件时将运行的代码。你的elseif 没有这个。 if (condition) { /* code */ }

标签: php


【解决方案1】:

退出标题:

header("Location: error.html?mailerror");
exit;

否则,脚本将继续运行。而且由于第二个if() 周围没有括号{},它将运行每个语句(紧跟在if() 语句之后的语句之后)。

【讨论】:

    【解决方案2】:

    我认为这是因为您尝试检查 elseif 中的第一个 !empty 行,这意味着.. 如果 $salutation 不为空并且 name 为空.. 等等。 所以,if else 方法是错误的。

    elseif(!empty($salutation)||!empty($name)||!empty($subject)||!empty($contact)||!empty($mail)||!empty($date)||!empty($event)||!empty($address)){
     // your code
    }
    

    我没有在 else if 在您的代码中看到 {}。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多