这是我检查表单的多个输入的代码。
但是,当表单为空时,我无法让它显示错误。到目前为止,尝试从 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;
{