PHP联系人表单问题$\u发布,$\u获取$\u会话
编辑: 所以我剩下的问题是:(1)我应该使用302还是303作为header()重定向?我相信303是正确的方式。(2) $\会话是将变量传递到?contact=Thankyu页面的最佳方式吗 我的修订守则:PHP联系人表单问题$\u发布,$\u获取$\u会话,php,redirect,Php,Redirect,编辑: 所以我剩下的问题是:(1)我应该使用302还是303作为header()重定向?我相信303是正确的方式。(2) $\会话是将变量传递到?contact=Thankyu页面的最佳方式吗 我的修订守则: if ( isset( $_POST[ 'submit' ] ) ) { if ( is_bot() ) { header( "Location: http://www.example.com/contact/?contact=thankyou", TRUE
if ( isset( $_POST[ 'submit' ] ) )
{
if ( is_bot() )
{
header( "Location: http://www.example.com/contact/?contact=thankyou",
TRUE, 303 );
exit;
}
elseif ( is_input_error() )
{
// show error form stuff...
}
else
{
contact_send_email();
header( "Location: http://www.example.com/contact/?contact=thankyou",
TRUE, 303 );
exit;
}
}
原件(已解决):
我正在学习$\u POST、$\u GET和PHP表单。我有一个联系方式,一开始很简单,但根据我的经验,现在有点复杂了
// curly braces left out for brevity
if ( isset( $_POST[ 'submit' ] ) )
if ( is_bot() )
header( "Location: http://www.example.com/contact/?contact=thankyou",
TRUE, 303 );
if ( is_input_error() )
header( "Location: http://www.example.com/contact/?contact=error",
TRUE, 303 );
else
contact_send_email()
header( "Location: http://www.example.com/contact/?contact=thankyou",
TRUE, 303 );
header()
重定向代码是否完整有效头()重定向之后传递$\u POST
变量的最常见和/或建议的方法是什么?是通过$\u会话
,还是有更好的方法?我以前从未使用过会话,所以我对它们有点害怕
编辑:顺便说一句,我想用
$\u GET
传递标题()
重定向,以避免“刷新重新发送”非常可怕和邪恶的警告消息。第一个问题。我建议在if
之后使用括号{
},因为条件块看起来无效
第二个问题。我想你不需要303状态码。典型的标题('Location:…')代码>就可以了
至于第三个问题。两种可能的解决方案是:会话或数据库
总之,我会:
if ( isset( $_POST[ 'submit' ] ) )
{
if ( is_bot() )
{
header( "Location: http://www.example.com/contact/?contact=thankyou" );
}
elseif ( is_input_error() )
{
header( "Location: http://www.example.com/contact/?contact=error" );
}
else
{
contact_send_email();
header( "Location: http://www.example.com/contact/?contact=thankyou" );
}
}
作为一个新手,我想我想知道你是否看到了任何明显的问题
我不知道您是否有意这样做,但您的代码将被翻译成带有花括号的版本,如下所示:
if (isset($_POST['submit'])) {
if (is_bot()) {
header("Location: http://www.example.com/contact/?contact=thankyou", TRUE, 303);
}
}
if (is_input_error()) {
header("Location: http://www.example.com/contact/?contact=error", TRUE, 303);
} else {
contact_send_email();
}
header("Location: http://www.example.com/contact/?contact=thankyou", TRUE, 303);
如果缺少大括号,则If
块的主体总是下一条语句。我怀疑你真的想要那样
my header()重定向代码是否完整有效
我会在每个标题
之后添加一个退出
,以防止执行更多的代码。但是其余的看起来很好。从header函数中删除303。这是一个302的临时重定向,如果没有显式设置,函数默认使用它
一个小问题,但值得注意;选择错误的HTTP重定向状态代码会略微影响SEO。我不明白您为什么要重定向到这些错误或感谢页面
出错时:再次显示表单和提交的值,突出显示错误或缺少必填字段的字段
成功时:显示感谢html页面。再想一想,如果出现“输入错误”,我认为您不应该重定向到错误页面。您应该在当前页面上显示错误消息。是的,并添加exit();正如Gumbo提出的那样,这是一个很好的信息,这正是我最初设置表单的方式——错误页面不使用header()重定向,但其他两个场景使用它。对于那些感兴趣的人来说,303重定向是发布后的正确方法。这是一个什么难题?戈奇亚。为了简洁起见,我省略了花括号。我想用$\u GET传递header()重定向,以避免出现“refresh resend”非常可怕和邪恶的警告消息。重定向到“thank you”页面是一种很好的做法,因为它会阻止用户两次提交表单。我读到,此页面上的重定向代码应该是303:。。。维基百科在这里引用了这一点:为了补充我上面的评论,评论员(Sam)说:需要记住的一点是,您的HTTP状态代码也应该是303而不是302,因此它符合标准,并且对于可能出现的新浏览器来说是安全的。只要阅读这些内容,它就非常有意义。唯一的问题是你是否更担心你的网站是否能经受住未来的考验,或者确保它能被老客户使用()。通过谷歌搜索,我也发现了关于重定向的问题:似乎正确的答案是使用303。