我为我的网站创建了此Cookie警报栏,它的工作原理是有意的。但是你需要点击关闭链接两次以关闭警告,原因是我无法弄清楚。
我使用以下函数来检查cookie是否存在。
function checkIfCookieExist($cookieName) {
if(isset($_COOKIE[$cookieName])) {
return true;
}
else {
return false;
}
}
如果cookie不存在,并且cookie get参数存在且等于1我创建一个cookie
if (!checkIfCookieExist('cookieConfirmation') && isset($_GET['cookie']) && $_GET['cookie'] == 1) {
$cookieName = 'cookieConfirmation';
$cookieValue = 'Cookie confirmation';
$cookieDuration = 86400 * 30 * 3;
setcookie($cookieName, $cookieValue, time() + $cookieDuration);
}
打印出cookie栏,使用cookie的get参数链接到index
function renderCookieBar() {
echo('
<div id="cookieBar">
<p>blabla cookie, cookies on this site yo</p>
<a href="index.php?cookie=1">I understand, close this box!</a>
</div>
');
}
调用函数在我的html代码中的给定位置打印出cookiebar
if(!checkIfCookieExist('cookieConfirmation')) {
renderCookieBar();
}
我感谢任何答案或帮助,
干杯!
答案 0 :(得分:1)
在标题中设置cookie时,cookie不会直接存在;表示:Cookie在下一页页面点击时可用。
查看手册:http://php.net/set_cookie
设置好Cookie后,可以使用$ _COOKIE数组在下一页加载时访问它们。 Cookie值也可能存在于$ _REQUEST。
中
你可以
使用header("Refresh:0");
设置Cookie并强制使用浏览器参与。
if (!checkIfCookieExist('cookieConfirmation') && isset($_GET['cookie']) && $_GET['cookie'] == 1) {
$cookieName = 'cookieConfirmation';
$cookieValue = 'Cookie confirmation';
$cookieDuration = 86400 * 30 * 3;
setcookie($cookieName, $cookieValue, time() + $cookieDuration);
header("Refresh:0");
}
使用JavaScript设置cookie时,可直接从浏览器获取。您也可以重写脚本,以便JavaScript设置cookie并删除通知栏。
有很多解决方案(也在SO上),如何轻松地在JavaScript中使用Cookie。如果您使用的是像jQuery这样的JavaScript库,那么您还可以plugins处理cookie。