我这样做:
JS:
Cookies.set(post_id + '_' + user_ip, post_id + "_" + user_ip, { expires: 1 });
PHP:
$cookie_str = $post_id.'_'.get_client_ip();
if (isset($_COOKIE[$cookie_str_]) ){
print_r('ok exist');
}
但它不起作用...存在cookie我在Chrome开发人员工具中检查网络。 JS和PHP中的cookie之间有什么不同吗?或者我做了一些愚蠢的错误? IP始终是相同的... console.log()表单JS显示与PHP相同的IP
解答:
好的我从cookie名称和值中删除IP并开始工作: $ _COOKIE [];
无法看到Cookie,如:54_23.23.211.2现在cookie只是一个简单的$ post_id;
但为什么" 54_23.23.211.2"没有工作,我不知道......不允许像cookie一样的饼干?
是 - http://harrybailey.com/2009/04/dots-arent-allowed-in-php-cookie-names/
PHP Cookie中不允许使用点:)
答案 0 :(得分:1)
在我看来,我会使用post_id
代替post_id
和user_ip
我建议不使用IP地址,因为NAT路由器后面可能有多台机器共享一个IP地址,还会出现移动设备始终更改其IP地址的问题,因为它们也将连接到不同的网络。
请查看我为某人发布的帖子: https://stackoverflow.com/a/32758176/3296661
但是如果你想坚持使用这个方法,你可以试试这个:
使用str_replace()
从PHP端的IP地址中删除所有点,并在JS端使用split('.').join("")
。这样客户端和服务器端都将匹配。
这是因为PHP cookie中不允许使用点。
JS:
user_ip = post_id.split('.').join("");
Cookies.set(post_id + '_' + user_ip, post_id + "_" + user_ip, { expires: 1 });
<强> PHP:强>
$cookie_str = $post_id . str_replace(".","", get_client_ip());
if (isset($_COOKIE[$cookie_str_]) )
{
print_r('ok exist');
}
答案 1 :(得分:0)
我不知道您的Cookie
对象的源代码,但expires: 1
看起来您的Cookie设置为在一秒后过期。