是否可以在PHP头中包含一些消息:
header("Location: http://somesite.com"); header("Message: hello");
然后访问site.com:
$message = some_function(); // "hello"
我目前在URL中使用$_GET参数,但正在寻找替代方法,也许发送$_POST?我尽量不使用$_GET,或使用cookie(我知道,这些都是最好的方法..)
iugsix8n1#
听起来像是要向要重定向到的页面发送一些额外数据。不,这在查询字符串之外是不可能的。您应该了解这里发生了什么。当您发送302或301状态码沿着Location:标头时,浏览器会看到这一点,然后向Location:标头指定的URL发出单独的请求。服务器不会向该页面发送任何内容。这几乎就像用户在浏览器中键入新的URL一样。我说几乎是因为在某些情况下,浏览器会设置一个引用,但这并不能保证。你能做的就是发送某种包含更多信息的令牌,比如你的页面在数据库或其他地方保存了一条消息,然后你在你要重定向到的URL的查询字符串中传递ID。此外,如果您设置了会话/cookie数据,并且您正在重定向到同一域中的某个内容,则可以在用户最终登录的页面上读取该信息。
302
301
Location:
pftdvrlh2#
除了布拉德建议的之外,你还可以在不影响查询字符串的情况下,在url中使用#发送一些信息,然后用js捕获它。
header("Location: http://somesite.com#success");
在JS:
if(window.location.href.indexOf('#success')>0) { alert("operation successfully completed"); }
2条答案
按热度按时间iugsix8n1#
听起来像是要向要重定向到的页面发送一些额外数据。不,这在查询字符串之外是不可能的。您应该了解这里发生了什么。
当您发送
302
或301
状态码沿着Location:
标头时,浏览器会看到这一点,然后向Location:
标头指定的URL发出单独的请求。服务器不会向该页面发送任何内容。这几乎就像用户在浏览器中键入新的URL一样。我说几乎是因为在某些情况下,浏览器会设置一个引用,但这并不能保证。
你能做的就是发送某种包含更多信息的令牌,比如你的页面在数据库或其他地方保存了一条消息,然后你在你要重定向到的URL的查询字符串中传递ID。
此外,如果您设置了会话/cookie数据,并且您正在重定向到同一域中的某个内容,则可以在用户最终登录的页面上读取该信息。
pftdvrlh2#
除了布拉德建议的之外,你还可以在不影响查询字符串的情况下,在url中使用#发送一些信息,然后用js捕获它。
在JS: