如果提交不成功,我正在寻找一些帮助构建Web表单以包含放置在表单上正确位置的PHP验证和错误消息。在我将实际的表单信息和验证提供给结构之前,我只是将一个简单的表单与一些随机验证规则放在一起,仅用于概念验证。
这是我的代码: -
<?php
if($_POST['name'] && $_POST['email']) {
$errors = array();
$name = $_POST['name'];
$email = $_POST['email'];
if (strlen($name) > 10) {
$errors['name'] = 'Name is too long';
}
if(empty($name) || empty($email)) {
$errors['required'] = 'All fields required';
}
}
if(empty($errors) && $_POST) {
echo 'Your form has been submitted';
} elseif ($errors || !$_POST) {
?>
<form name="form" action="index.php" method="post">
<?PHP if (isset($errors['required'])) { echo $errors['required'];} ?>
Name:<br>
<input type="text" name="name" value="<?php echo $name ?>"><?PHP if (isset($errors['name'])){ echo $errors['name']; } ?><br>
Email<br>
<input type="text" name="email"><br>
<input type="submit" name="submit" value="submit">
</form>
<?PHP }
?>
结果是,我的表单显示并提交,但验证有点被忽略。如果任何验证导致错误,而不是表单上显示的错误,页面只返回空白,没有错误消息或表单。任何人都可以告诉我哪里出错了?
非常感谢任何帮助!
谢谢,Ben(如果你还没有猜到我是PHP和HTML的新手!)
答案 0 :(得分:0)
我认为您的问题可能就在这一行
} elseif ($errors || !$_POST) {
尝试使用
} elseif (!empty($errors) || !$_POST) {
答案 1 :(得分:0)
我的建议是处理开发模式,并将错误报告设置为显示通知和警告。任何变量初始化都会很好。
我在下面修改了你的代码,为你提供变量检查和初始化的要点:)
<?php
$errors = array();
$name='';
$email='';
if(isset($_POST['name']) && isset($_POST['email'])) {
$name = $_POST['name'];
$email = $_POST['email'];
if (strlen($name) > 10) {
$errors['name'] = 'Name is too long';
}
if(empty($name) || empty($email)) {
$errors['required'] = 'All fields required';
}
}
if(empty($errors) && $_POST) {
echo 'Your form has been submitted';
} elseif ($errors || !$_POST) {
?>
<form name="form" action="9941580.php" method="post">
<?PHP if (isset($errors['required'])) { echo $errors['required'];} ?>
Name:<br>
<input type="text" name="name" value="<?php echo $name ?>"><?PHP if (isset($errors['name'])){ echo $errors['name']; } ?><br>
Email<br>
<input type="text" name="email"><br>
<input type="submit" name="submit" value="submit">
</form>
<?php }
?>
答案 2 :(得分:0)
if($_POST['name'] && $_POST['email']) {
将返回false,因此验证(在条件内发生)永远不会运行。
如果提供了电子邮件地址且名称超过10个字符,则表单会显示相关错误(“名称太长”)
答案 3 :(得分:0)
请看下面的建议
<?php
if(isset($_POST['submit'])) {
$errors = array();
$name = $_POST['name'];
$email = $_POST['email'];
if (strlen($name) > 10) {
$errors['name'] = 'Name is too long';
}
if(empty($name) || empty($email)) {
$errors['required'] = 'All fields required';
}
if(empty($errors) && $_POST) {
echo 'Your form has been submitted';
} elseif ($errors || !$_POST) {
?>
<form name="form" action="" method="post">
<?PHP if (isset($errors['required'])) { echo $errors['required'];} ?>
Name:<br>
<input type="text" name="name" value="<?php echo $name ?>"><?PHP if (isset($errors ['name'])){ echo $errors['name']; } ?><br>
Email<br>
<input type="text" name="email"><br>
<input type="submit" name="submit" value="submit">
</form>
<?PHP }
}else{
?>
<form name="form" action="" method="post">
Name:<br>
<input type="text" name="name" value=""><br>
Email<br>
<input type="text" name="email"><br>
<input type="submit" name="submit" value="submit">
</form>
<?php
}
?>