Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使PHP表单错误显示在同一页面上?_Php_Html_Forms - Fatal编程技术网

如何使PHP表单错误显示在同一页面上?

如何使PHP表单错误显示在同一页面上?,php,html,forms,Php,Html,Forms,我有一个简单的联系表单,附带了一些PHP验证。但是,如果某个字段留空,表单抛出这些错误之一,它将重定向到一个空白页面,并在空白屏幕上回显错误。我该如何将这些错误保持在同一页上?错误不必立即验证,只要有人单击“发送”。最理想的情况是,它将直接指向联系人表单页面,并添加一个关于表单的文本字符串,告诉用户有错误 PHP HTML 名称 电子邮件 主题 咨询要求 订购服务 只是打个招呼 其他 消息 电子邮件 如果您是人类,请将此字段留空 两个基本选项 (1) 将错误消息作为U

我有一个简单的联系表单,附带了一些PHP验证。但是,如果某个字段留空,表单抛出这些错误之一,它将重定向到一个空白页面,并在空白屏幕上回显错误。我该如何将这些错误保持在同一页上?错误不必立即验证,只要有人单击“发送”。最理想的情况是,它将直接指向联系人表单页面,并添加一个关于表单的文本字符串,告诉用户有错误

PHP


HTML


名称

电子邮件

主题 咨询要求 订购服务 只是打个招呼 其他

消息

电子邮件 如果您是人类,请将此字段留空

两个基本选项

(1) 将错误消息作为URL的一部分包括在内

header("Location: contact.php?error=" . urlencode("You must specify a value for name."));
然后,您可以在
contact.php
中添加
echo$\u GET[“error”]在适当的位置

这里最大的缺点是可能被滥用。URL中包含的消息可以由用户或任何人更改以显示任何内容。恶意用户可能会更改消息以混淆或滥用用户

(2) 使用会话存储错误消息

session_start();
$_SESSION["error"] = "You must specific a value for name.";
然后在
contact.php
的顶部添加一个
session_start()并在页面的某个位置添加

if ($_SESSION["error"] != "") {
  echo $_SESSION["error"];
  $_SESSION["error"] = "";
}

有更多的方法,但这应该让你开始

如果您对Javascript或AJAX不太了解,那么实际上可以使用PHP实现这一点。你有两个选择:其中一个过于复杂,但无论如何我都会给你

选项#1:

将表单发送到同一页

更改表单的操作以将其发送到表单本身所在的任何页面。然后,当您想要执行错误消息时,而不是执行

echo "insert error message here";
对于第一个错误消息,在您的情况下,如果他们将name留空,您希望执行以下操作:

$errormsg = "insert error message here";
$errormsg .= "insert error message here";
对于其他每一次验证,您都要执行以下操作

$errormsg = "insert error message here";
$errormsg .= "insert error message here";
然后,只需呼出

$errormsg
如果它不为空

选项2

这个选择太过分了。它的概念与上面的相同,但是如果您想在另一个页面上显示表单,它会增加对表单的支持

确保你有

session_start();
在表单页面和表单验证php页面的顶部

现在,对于发生的第一个errormsg:

$_SESSION['errormsg'] = "insert error message here";
对于此后的每一个错误消息,您可以执行以下操作

$_SESSION['errormsg'] .= "insert error message here";

正如我们之前所做的。

您正在寻找ajax。然而,这个问题现在不太适合,所以,试着展示一些研究,而不仅仅是把你的问题扔给我们你也可以通过javascript来解决。请参阅混合HTML和PHP以就地输出消息。一些表单管理和验证类会让它变得不那么单调乏味,AJAX方法或HTML5客户端验证规则也是如此。我们已经对此进行了研究。尝试了jquery,但似乎无法解决问题,这是90%答案的建议。ajax对我来说是一个新的解决方案。我知道如何使用谷歌,只是jquery不太好。谢谢安迪。当然,我们将了解会话以及ajax解决方案。