Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Cookie控件_Php_Variables_Cookies - Fatal编程技术网

PHP 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=

我正在使用一个逻辑运算符创建一个cookie,其中包含一个值字符串,具体取决于用户通过我的网站的流量路径

在我的网页上,我有以下变量

$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'; }