在php表单中提交之前出现错误

在php表单中提交之前出现错误,php,forms,Php,Forms,我有以下代码,但不幸的是$error会在页面加载后立即出现,然后单击submit。我做错了什么 (filename=form.php) 将(!$error==”)替换为($error!==”) } 如果设置了$error且$error不等于零,则返回$error? 在第一行中将$error初始化为“”且等于“”时,正在设置$error 刚刚注意到了这一点!在if的第二部分中。照我下面的人说的做。你最好重写你的代码,这是梅西更新的代码。我是php新手,你能指出为什么它会一团糟吗?好的,谢谢你,我

我有以下代码,但不幸的是$error会在页面加载后立即出现,然后单击submit。我做错了什么

(filename=form.php)


(!$error==”)
替换为
($error!==”)

}

如果设置了$error且$error不等于零,则返回$error? 在第一行中将$error初始化为“”且等于“”时,正在设置$error


刚刚注意到了这一点!在if的第二部分中。照我下面的人说的做。

你最好重写你的代码,这是梅西更新的代码。我是php新手,你能指出为什么它会一团糟吗?好的,谢谢你,我更新了代码(见上文),但是这并不能解决我的问题:当重新加载页面时,仍然会显示错误。它会记住上一次“提交”操作的值。重新加载是指刷新还是实际从另一个链接转到页面?刷新将重新发送post数据,这是正常行为。如果它直接进入页面,我有点不明白为什么要说实话。顺便说一句,你不需要结束代码,只要在HTML开始之前关闭PHP即可。好的,谢谢Rick,我明白你的意思了。我认为刷新页面会考虑代码顶部的$error=“”,并清空变量$error。顺便问一下,我如何重置此表单?我的重置按钮不起作用。另外,如果我只是在没有herdeoc内容的情况下放入纯html,那么表单中的内容就不起作用,换句话说,用户输入在提交时就消失了。谢谢,L。啊,对了,我没有注意到这些值,我个人将这样的内容作为独立的php标记,而不是像你这样做,但两者都可以。重置表单:给reset按钮一个submit类型,然后您可以为它添加代码,其概念与执行isset和a==reset的其他代码相同。然后,您可以将这些字段留空,而不触发表单本身的提交代码。
<?php
$error="";
if (isset($_POST['submit']) && $_POST['submit'] == "Submit") {  

$name = $_POST['name'];
$email = $_POST['email'];

if($name=="" || $email==""){
$error .= "Error: all fields are required";
}
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
$email)) {
$error .= "<br/> Error: Invalid email address";
}

if (isset($error) && ($error!=="")) {
    echo $error;
}
elseif (empty($error)){
    // this works no need to write here... send form.
    }
    }

echo<<<_END
<html><head><body>
<form method='post' action='form.php'>
<p>Name</p> <input type="text" name="name" value='$name'>
<p>Email</p> <input type="text" name="email" value='$email'>
<input type="submit" name="submit" value="Submit">
<input type="reset" name="reset" value="Clear">
</form>
</body>
</html>
_END;
?>
if (isset($error) && (!$error=="")) {
echo $error;