这是我的代码:
function set_newuser_cookie() {
if ( !is_admin() && !isset($_COOKIE['domain_newvisitor'])) {
setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false);
}
}
add_action( 'init', 'set_newuser_cookie');
使用此代码cookie可以很好地工作但是当我通过这个javascript代码检查cookie存在时(需要检查我们是否有cookie在javascript代码中的其他地方使用它):
var isCookie = document.cookie.match(/^(.*;)?domain_newvisitor=[^;]+(.*)?$/);
if(isCookie){
console.log('yes');
}else{
console.log('no');
}
它总是在控制台日志中显示“是”,即使是第一次删除cookie和访问网站时也是如此。如何在用户第二次打开页面时更改php代码以创建cookie。
答案 0 :(得分:1)
您将Cookie设置为:
function set_newuser_cookie() {
if ( !is_admin() && !isset($_COOKIE['domain_newvisitor'])) {
setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false);
}
}
add_action( 'init', 'set_newuser_cookie');
说明:如果已设置cookie => !isset($_COOKIE['domain_newvisitor'])
而用户不是管理员,您正在设置Cookie。
在此之后检查它是否退出:
var isCookie = document.cookie.match(/^(.*;)?domain_newvisitor=[^;]+(.*)?$/);
if(isCookie){
console.log('yes');
}else{
console.log('no');
}
然后每次都会退出cookie。正如您第一次创建它并检查它是否退出。
你应该检查cookie是否退出然后存储它变量并使用它然后创建它:
function set_newuser_cookie() {
if ( !is_admin() && !isset($_COOKIE['domain_newvisitor'])) {
setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false);
}else
if(!is_admin() && isset($_COOKIE['domain_newvisitor'])){
$CookieValue = $_COOKIE['domain_newvisitor']
//echo or return this $CookieValue
}
}
add_action( 'init', 'set_newuser_cookie');
现在,您可以在js中使用$ CookieValue,方法是将其从服务器传递到客户端。