PHP Cookie控件
我正在使用一个逻辑运算符创建一个cookie,其中包含一个值字符串,具体取决于用户通过我的网站的流量路径 在我的网页上,我有以下变量PHP Cookie控件,php,variables,cookies,Php,Variables,Cookies,我正在使用一个逻辑运算符创建一个cookie,其中包含一个值字符串,具体取决于用户通过我的网站的流量路径 在我的网页上,我有以下变量 $lgc_code = '3' 我的cookie控件设置如下: if ($lgc_code != '') { $lgc=$lgc_code; // check for cookie if (isset($_COOKIE['lgc_cntl'])) { // read cookie $lgc_codes=
$lgc_code = '3'
我的cookie控件设置如下:
if ($lgc_code != '') {
$lgc=$lgc_code;
// check for cookie
if (isset($_COOKIE['lgc_cntl'])) {
// read cookie
$lgc_codes=$_COOKIE['lgc_cntl'];
// check for triggers in cookie
$expEncArr = explode(",", $lgc_codes);
foreach($expEncArr as $code){
if ($code==$lgc_code) {$found='yes';}
}
if (isset($found)) {
$lgc_codes=$_COOKIE['lgc_cntl'];
} else {
$lgc_codes=$_COOKIE['lgc_cntl'].','.$lgc;
}
} else {
$lgc_codes=$lgc;
}
// add campaign to cookie
setcookie('lgc_cntl',$lgc_codes,time() + (86400 * 365), "/", ".domain.com"); // 86400 = 1 day
} else {
$lgc = '1';
if (isset($_COOKIE['lgc_cntl'])) {
// read cookie
$lgc_codes=$_COOKIE['lgc_cntl'];
// check for triggers in cookie
$expEncArr = explode(",", $lgc_codes);
foreach($expEncArr as $code){
if ($code==$lgc_code) {$found='yes';}
}
if (isset($found)) {
$lgc_codes=$_COOKIE['lgc_cntl'];
} else {
$lgc_codes=$_COOKIE['lgc_cntl'].','.$lgc;
}
} else {
$lgc_codes=$lgc;
}
// add campaign to cookie
setcookie('lgc_cntl',$lgc_codes,time() + (86400 * 365), "/", ".domain.com"); // 86400 = 1 day
}
这适用于从页面传递到cookie的单个变量,但我需要能够同时传递多个变量,同时将它们与cookie进行比较
例如,如果我的页面变量读取“1,5,10”,而我的cookie包含“1和10”,那么只需要添加变量5
目前,如果我在页面上添加多个变量,cookie只会在每次加载页面时复制这些变量,因此我的结果是“1,1,5,10,10”
如何修改下面的代码以比较变量,并仅添加cookie中尚未找到的变量?如果
$lgc\u code
可能包含逗号分隔的值,则应在比较之前将其转换为数组。试着换几行
// check for triggers in cookie
$expEncArr = explode(",", $lgc_codes);
foreach($expEncArr as $code){
if ($code==$lgc_code) {$found='yes';}
}
到
如何在一个页面上设置多个变量
$lgc_code='1,5,10'
?是的,多个变量将完全按照您的假设进行设置。然后,结果“1,1,5,10,10”来自多个带有单个$lgc_code
的页面,或者一个带有$lgc_code='1,5,10'
的页面。如果变量有一个代码,它将根据cookie中找到的代码检查代码,并正常工作。如果变量中有多个代码,它只会在cookie中复制它们。只是添加了一个答案来处理多个值,请查看它是否有帮助。当我按照您的大纲修改代码时,它不再发布单个变量或多个变量。它是否能够成功检测单个和多个新代码?否,在设置代码时,它似乎没有检测到它们中的任何一个。
// check for triggers in cookie
$expEncArr = explode(",", $lgc_codes);
$thisPageArr = explode(",", $lgc_code);
$newCodes = array_diff($thisPageArr, $expEncArr);
if (!empty($newCodes)) { $found = 'yes'; }