未定义的索引(Cookie)

时间:2015-02-10 20:05:14

标签: php html cookies

我有PHP和hir Cookies的问题。 我正在做一个带有cookie的数组。

$possition = 0
setcookie('array['.$possition.']', "test");

echo $_COOKIE['array['.$possition.']'];

使用此代码,我创建了一个名为' array [0]'的Cookie。并且有价值'测试' (我可以在Google Chrome Cookie管理中看到它。)

但是,当我使用' echo'出现此消息:

Notice: Undefined index: array[0] in C:\xampp\htdocs\recub.php on line 7

但这个cookie不是空的......

有人知道如何解决这个问题吗?我已经尝试了" isset"但是这并没有显示任何内容。

此致

更新:

Rizier123使用延迟...有我的完整代码:

的index.php

<?php
setcookie('array_position', '0');
?>
<html>
<head>
    <style> 
        #lista{border: 1px solid red; height:300px; width: 300px; margin: 0 auto}
        #result{border: 1px solid blue; height:300px; width: 300px; margin: 10 auto}
    </style>
    <script>
        function add(e) {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
            }
            xmlhttp.open("GET", "cali.php?q=" + e, true);
            xmlhttp.send();
        }
    </script>
</head>
<body>
    <div id="lista">
        <ul>
            <li id="test1" onclick="add('test1')">test1</li>
            <li id="test2" onclick="add('test2')">test2</li>
            <li id="test3" onclick="add('test3')">test3</li>
            <li id="test4" onclick="add('test4')">test4</li>
        </ul>
    </div>
    <div id="result">
        <ul>
            <li id="txtHint"></li>
        </ul>
    </div>
</body>
</html>

cali.php

<?php
// Get element ID.
$q = $_REQUEST["q"];
// Get the current array's position.
$position = $_COOKIE['array_position'];
setcookie('array['.$position.']', $q);
// Assign the Element ID on this Array. (1º Time must be array[0])
$num = $_COOKIE['array_position'];
// Loop for display all array values
for($i=0; $i<=$num; $i++){
    echo $_COOKIE['array'][$i]."</br>";
}
// the current array's position + 1 for next time.
$num2 = $_COOKIE['array_position']+1;
setcookie ('array_position', $num2) ;
?>

(请记住,每次重新加载页面时都要删除cookie。) 这样,第一次单击某个项目时,将显示未定义的索引。如果您继续点击项目,则会显示上一个项目...

1 个答案:

答案 0 :(得分:2)

你必须改变这个:

echo $_COOKIE['array['.$possition.']'];

到此:

echo $_COOKIE['array'][$possition];

有关setcookie()的详情,请参阅手册:http://php.net/manual/en/function.setcookie.php

从那里引用(例3):

  

您还可以在Cookie名称中使用数组表示法设置数组Cookie。这样可以设置与数组元素一样多的cookie,但是当脚本收到cookie时,这些值都将放在一个带有cookie名称的数组中: