【发布时间】:2021-12-17 20:47:55
【问题描述】:
我有一个带有表单的模式,人们可以在其中添加他们的地址,然后提交它。表单的值通过GET 方法保存。我正在使用该输入中的值在我的 function.php 文件中设置一个名为 origin 的 cookie(也是输入的名称):
function action_init() {
$path = parse_url( get_option('siteurl'), PHP_URL_PATH );
$host = parse_url( get_option('siteurl'), PHP_URL_HOST );
$expiry = time() + 36000;
$origin = isset($_GET['origin']) ? $_GET['origin'] : null;
if( ( $origin != null ) ) {
setcookie( 'origin', $origin, $expiry, $path, $host );
}
}
add_action( 'init', 'action_init' );
提交表单后,浏览器会重定向到根据用户地址查询结果的页面。一切正常。
我的问题是,在同一个搜索结果页面上,我试图像这样显示用户的地址:
if(isset($_COOKIE['origin'])) {
echo $_COOKIE['origin'];
};
第一次加载搜索结果页面时,该 cookie 不会被调用到页面。只有当我刷新浏览器时它才会最终显示出来。
有没有办法让我从第一个页面加载时就显示该 cookie?
【问题讨论】:
-
“提交表单后,浏览器重定向到查询结果的页面” - 听起来这不是真正的 redirect(第二次请求),而是您首先将表单数据提交到哪里...?在这种情况下,当然 cookie 还不可用 - 因为它只会在处理该请求时创建。但是你可以通过 $_GET 获得值,所以在那个实例中从那里获取它。
-
啊,是的。我理解,你是对的,那是表单数据被发送到的地方,所以不是重定向。 “那么在那种情况下从那里拿走它”......你能扩展一下吗?你是说我可以使用
$origin = isset($_GET['origin']) ? $_GET['origin'] : null;和echo $origin而不是回显cookie? -
如果您想将其放入答案表格中,我可以接受。只需使用
echo $_GET['origin'];,现在就可以正常工作了。