发送带有PHP标头位置重定向的消息

erhoui1w  于 2023-02-03  发布在  PHP
关注(0)|答案(2)|浏览(91)

是否可以在PHP头中包含一些消息:

header("Location: http://somesite.com");
header("Message: hello");

然后访问site.com:

$message = some_function(); // "hello"

我目前在URL中使用$_GET参数,但正在寻找替代方法,也许发送$_POST?
我尽量不使用$_GET,或使用cookie(我知道,这些都是最好的方法..)

iugsix8n

iugsix8n1#

听起来像是要向要重定向到的页面发送一些额外数据。不,这在查询字符串之外是不可能的。您应该了解这里发生了什么。
当您发送302301状态码沿着Location:标头时,浏览器会看到这一点,然后向Location:标头指定的URL发出单独的请求。服务器不会向该页面发送任何内容。这几乎就像用户在浏览器中键入新的URL一样。
我说几乎是因为在某些情况下,浏览器会设置一个引用,但这并不能保证。
做的就是发送某种包含更多信息的令牌,比如你的页面在数据库或其他地方保存了一条消息,然后你在你要重定向到的URL的查询字符串中传递ID。
此外,如果您设置了会话/cookie数据,并且您正在重定向到同一域中的某个内容,则可以在用户最终登录的页面上读取该信息。

pftdvrlh

pftdvrlh2#

除了布拉德建议的之外,你还可以在不影响查询字符串的情况下,在url中使用#发送一些信息,然后用js捕获它。

header("Location: http://somesite.com#success");

在JS:

if(window.location.href.indexOf('#success')>0) {
    alert("operation successfully completed");
}

相关问题