我正在创建一个表单。有一些服务器端验证在与包含表单的html文件分开的php文件中执行。如果验证失败,我想重定向回原始的html页面,并显示错误消息,说明出了什么问题。
现在,我能够成功验证并使用header()重定向回html页面,但我不确定如何创建和放置错误消息。如果它已被重定向到header(),是否可以使用php检查html页面的顶部?如果是这样,那将解决问题......
谢谢!
答案 0 :(得分:1)
我认为有几种方法可以做到这一点。
1添加get参数,如:
<input type="hidden" name="formsent" value="1" />
然后将方法添加到您的<form>
当您从其他页面重定向时,获取将在链接中,以便您可以将其发回
header("Location: http://localhost/yourform.php/?{$_GET['formsent']}");
或者您可以在帖子中进行验证
if (isset($_POST) && !empty($_POST)) {
do stuff here.. if all is ok go to next page otherwise show errors
}
或者你可以在帖子之后使用$_SESSION['formsent'] = 1
将一个var添加到会话中,然后你也可以检查它。
它上升2你
答案 1 :(得分:1)
您应该使用PHP会话设置变量。
表单页
session_start();
$_SESSION["formerror"] = "Error code here";
header("Location: http://www.example.com");
重定向到第页
session_start();
$errorcode = $_SESSION["formerror"];
// Now convert the error code to something readable and print it out if needed.
IMO比GET变量更清晰。
答案 2 :(得分:0)
正如@Mark所写,您可以通过标题()中的url(我的意思是url + "?variable=$variable"
)在变量中发送消息,并通过{{捕获页面中的消息(现在是php页面) 1}}。该消息取决于您的验证
当然,您可以查看:https://stackoverflow.com/a/872522/2737474(@Jrgns) 在页面之间传递一个变量的不同方法。
在我看来,你必须小心选择其中一个:
- 如果您为多个页面使用一个值(请记住它将存储在服务器上),最好使用$_GET
。
- 如果您只为两页使用一个值,最好使用SESSION
或GET
(取决于您的情况,网址/表单)。
- 如果您为多个页面使用一个值并希望在会话之间保留它(请记住它将存储在客户端上),最好使用POST
。
答案 3 :(得分:0)
您可以使用$_GET[]
方法
如果验证成功,则重定向到像
这样的网址form.php?status=1 // 1 for success
如果验证失败,则重定向到
form.php?status=0 // 0 for fail
在 form.php 这是您的表单页面。
使用简单的if-else条件
if(isset($_GET['status']))
{
if($_GET['status']==0)
echo'something went wrong';
//else nothing
}
答案 4 :(得分:0)
正如许多聪明的用户所写,你有几种方法如何实现这一点(我不会写所有这些):
第一次使用会话检查Daniel的回答
第二次使用GET检查Sanket Shembekar的回答
3rd 使用rZaaaa的答案,但你可以为它附魔:D
<强>附强>
第1页
header('error: true');
第2页
print_r(headers_list()); //and find your error