修改
所以我剩下的问题是:(1)我应该使用302或303作为header()重定向吗?我相信303是正确的方法。 (2)$ _SESSION是将变量传递给?contact = thankyou页面的最佳方法吗?
我修改后的代码:
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;
}
}
ORIGINAL(已解决):
我正在学习PHP的$ _POST,$ _GET和表单。我有一个简单的联系表格,但现在我的经历变得有点复杂。
// 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()
重定向代码是否完整且有效?$_POST
重定向后传递header()
变量的最常见和/或推荐方法是什么?它是$_SESSION
,还是有更好的方法?我之前从未使用过会话,所以我有点被他们吓倒了。 编辑:顺便说一下,我想通过header()
传递$_GET
重定向,以避免“刷新重新发送”非常恐怖和邪恶的警告信息。
答案 0 :(得分:1)
在这方面有新意,我想我想知道你是否看到任何明显的问题?
我不知道你是否打算这样做,但你的代码会被翻译成带有花括号的版本:
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
块的主体总是只是下一个语句。我怀疑你真的想要那个。
我的header()重定向代码看起来是否完整且有效?
我会在每个exit
之后添加header
,以防止进一步执行代码。但其余的看起来很好。
答案 1 :(得分:0)
第一个问题。我建议在{
之后使用括号}
if
,因为条件块看起来无效。
第二次问题。我认为您不需要303状态代码。典型的header('Location: ...');
会做。
3rd 问题。两种可能的解决方案是:会话或数据库。
总结一下,我会这样做:
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" );
}
}
答案 2 :(得分:0)
从标题功能中删除303。它是一个302,您想要的临时重定向,如果您没有明确设置,则默认使用该功能。
小点,但值得注意;选择错误的HTTP重定向状态代码会略微扰乱SEO。
答案 3 :(得分:0)
我不明白你为什么要重定向到那些错误或感谢你的页面。
出错时:使用提交的值再次显示表单,突出显示包含错误或缺少必填字段的字段。
成功:显示谢谢你html页面。