你写道,你有问题要了解发生了什么事。因此,让我们检查,如果子句中的一个深度:
if((empty($_POST['answer1'])) || (trim($_POST['answer1'])=="") || ($_POST['answer1'] == NULL) || (!isset($_POST['answer1']))) { ...
这可能是更简单写成:
if (empty($_POST['answer1']) || trim($_POST['answer1'])=="") { ...
这是因为NULL
值empty()
和!isset(...)
值空为好。你已经在第一个检查过了,所以不需要再检查一次。
然后没有必要在所有内容都加上括号。只有在实际需要时添加它们,才能使代码更易于阅读。
让我们修改基于这样的代码:
if (empty($_POST['answer1']) || trim($_POST['answer1'])=="") {$errors = "yes";}
if (empty($_POST['answer2']) || trim($_POST['answer2'])=="") {$errors = "yes";}
// Error checking, make sure all form fields have input
if ($errors == "yes") {
接下来的部分是$errors
变量。没有必要说是和否,而你的意思是true
或false
。接下来,变量应该初始化为一切正常的情况。让我们更多地更改代码:
$errors = false;
if (empty($_POST['answer1']) || trim($_POST['answer1'])=="") {$errors = true;}
if (empty($_POST['answer2']) || trim($_POST['answer2'])=="") {$errors = true;}
// Error checking, make sure all form fields have input
if ($errors) {
// Not all fields were entered error
$message = "You must enter values to all of the form fields!";
$output = array('errorsExist' => true, 'message' => $message);
}
所以现在代码看起来好一点,可以找到您的实际错误。为了找出错误,你需要检查哪些值实际上是提交表单:
echo '<pre>', htmlspecialchars(print_r($_POST, true)), '</pre>'; die();
请求页面再次,你会看到您所提交的数据,所以你可以检查你是否错误,请检查正确的领域。
另一种方法是期望所有提交都有错误。所以默认值是true
。那么只有在所有字段都有效的情况下,$errors
设置为false
。
因此,在你的情况下,如果你没有做正确的错误检查,你的回应将永远不会返回任何错误,即使是在实践中的形式。这就是为什么你应该控制你的错误检查是否真正起作用。
根据意见的反馈,很明显,你需要引用answer1
和answer2
后场里面的物品。你只是检查了错误的领域。
所以只要用$_POST['answer1'][2]
代替$_POST['answer1']
,其他答案也一样。这是例如,如果子句answer1
:
if (empty($_POST['answer1'][2]) || trim($_POST['answer1'][2])=="") { ...
^^^ ^^^
就始终测试正确的变量,它应该像预期。
相关:How do I create a server-side form submission script that has client-side characteristics?
使用标志像'yes'和'no'脱身,使用'真/ FALSE'因为它的目的,那么你会降低你的'如果()'FN这个:'if($ errors)'(这意味着如果$ errors是TRUE,不需要做比较或==检查)。 – Jakub