我想检查哪些用户接受了Cookie,这样我就可以在我们的某个PHP网站上获得大多数接受Cookie的用户。
我的想法是在Users表中创建一个临时acceptsCookies
列以帮助跟踪此情况(例如,如果用户接受Cookie,则其acceptsCookies
将设置为“Y”,否则它将被设置为“N”)。
如何在单个页面上执行此操作(设置测试Cookie,检查是否已接受/设置,更新数据库)?
更新:要明确,这必须在PHP中完成100%。
答案 0 :(得分:4)
您无法一步完成,因为Cookie必须先向浏览器发送,并且只会在后续请求中发回给您。所以,如果你有类似的东西:
<?php
session_start();
session_write_close(); // unlock session file so checkcookie.php below won't block.
setcookie(...);
?>
<html>
<body>
<img src="checkcookie.php" width="0" height="0" />
您可以使用checkcookie.php脚本更新会话的acceptedCookie值。
答案 1 :(得分:1)
使用PHP,您无法在单个页面上执行此操作。另一种选择是检查javascript,然后将ajax调用提交到另一个php页面:
<script>
var tmpcookie = new Date();
chkcookie = (tmpcookie.getTime() + '');
document.cookie = "chkcookie=" + chkcookie + "; path=/";
if (document.cookie.indexOf(chkcookie,0) < 0) {
//AJAX CALL IN HERE SAYING NO COOKIES
}
else {
//AJAX CALL IN HERE SAYING ACCEPTING COOKIES
}
</SCRIPT>
答案 2 :(得分:0)
PHP 单独无法确定用户是否在单个页面中接受了cookie。
PHP将cookie作为标题发送,然后在下一页请求中读取客户端发送的标题。 PHP无法在交付的同一页面中找到cookie是否被接受。这就是JavaScript的领域。