如果form为空,返回error0到index,php


If form is empty, resturn error0 to index,php

这是我的代码,用于检查表单的多个输入。

但是,当表单为空时,我无法让它显示错误。到目前为止,尝试从index.php进入这个页面会导致它再次返回到index.php。

(我的猜测是,甚至在输入表单中的值之前,PHP已经确定它们是空的,所以发送给我吗?)

我怎么能先显示表单,然后让php检查POST是否未设置,返回我回到index.php与会话中的错误?

谢谢!

   <?php
    // session for POST success and error messages
    session_start();
    require_once "db.php";
    if ( isset($_POST['a']) && isset($_POST['b']) 
         && isset($_POST['c'])) {
        $a = mysql_real_escape_string($_POST['a']);
        $b = mysql_real_escape_string($_POST['b']);
        $c = mysql_real_escape_string($_POST['c']);
        if (preg_match('/'-*'d+'.*'d*/',$b) && preg_match('/'-*'d+'.*'d*/',$c) &&
            (-10 <= $b && 10 >= $b) && (-20 <= $c && 20 >= $c)) {
            [some code checking for different conditions...]
    } elseif (!isset($_POST['a']) | !isset($_POST['b']) | !isset($_POST['c'])) {
            $_SESSION['error'] = $_POST['error0'];
            header('Location: index.php') ;
            return;
    }
    ?>

<form method="post">
<p>A:
<input type="text" name="a"></p>
<p>B:
<input type="text" name="b"></p>
<p>C:
<input type="text" name="c"></p>
<!--Sending POST for success-->
<input type="hidden" name="success" value="Record Added">
<input type="hidden" name="error0" value="All values are required">
<p><input type="submit" value="Add New"/>
<a href="index.php">Cancel</a></p>
</form>

解决:去掉了elseif并在if

中添加了另一个条件
} elseif (strlen($a) == 0 | strlen($b) == 0 | strlen($c) == 0) { 
    $_SESSION['error'] = $_POST['error0'];
    header('Location: index.php') ;
    return;
{

||不只一个

elseif (!isset($_POST['a']) || !isset($_POST['b']) || !isset($_POST['c'])) {

您应该使用逻辑或代替。所以:

elseif (!isset($_POST['a']) || !isset($_POST['b']) || !isset($_POST['c']))

post变量可以设置,但为空,所以检查长度以及isset

strlen(trim($_POST['a']))

当然,前提是你不想要空值。

if ( ( isset($_POST['a']) && strlen(trim($_POST['a'])) ) && ( isset($_POST['b'] && strlen(trim($_POST['b'])) ) )