我在第1页上有一个表单:
<form method="post" action="request-form">
<input type="text" id="amzQry" name="item" placeholder="What do you need?" autocomplete="on">
<input id="autocomplete" name="destination" placeholder="where? (e.g. Buenos Aires)" onfocus="geolocate()" type="text" required="" aria-required="true" autocomplete="off">
<button type="submit" value="" >submit</button>
</form>
我希望这些信息以持久的方式保存,以便即使用户随后登录(在这种情况下为joomla),cookie数据也是持久的并且可以被调用。这就是我在这种情况下使用cookie而不是会话的原因。如果这不是正确的做法,请纠正我。
我有一些代码可以在第2页设置和检索cookie:
<?php
$itemcookie = $_POST['item'];
$detsinationcookie = $_POST['destination'];
setcookie( "itemcookie", $itemcookie, strtotime( '+30 days' ) );
setcookie( "destinationcookie", $detsinationcookie, strtotime( '+30 days' ) );
?>
但是,在表单提交后加载时,cookie数据不会出现在第二页上。如果我刷新第二页,数据出现在正确的位置,即我用例如。
调用的地方<?php echo $_COOKIE["itemcookie"]; ?>
如何在第2页立即获取Cookie数据?
答案 0 :(得分:2)
你不能。
如果您查看manual:
Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE or $HTTP_COOKIE_VARS arrays.
^^^^^^^^^^^^^^
这意味着您的Cookie将无法在您设置它们的页面/脚本上使用。
您可以使用另一个变量来显示值,例如:
$itemcookie_value = isset($_POST['item']) ? $_POST['item'] : $_COOKIE["itemcookie"];
答案 1 :(得分:0)
显然你在调用setcookie()之前有一些输出 如果在session_start(),setcookie()或者说header()之前有一些输出(甚至是一个空格字符),浏览器将无法识别cookie,并且在脚本启动后它们将无法使用。
答案 2 :(得分:0)
可以。
您要做的就是使用AJAX请求设置cookie,这样,当您仍在页面上时就设置cookie,然后在刷新页面一次后,该cookie就可以使用了。