我有一个像这样的cookie,并使用javascript设置cookie。现在我需要使用php读取cookie值 这就是cookie存储的方式。我能够看到来自mozila debugg工具的cokie值
["as","asda","fdfdf"] - multiple values
有时它只能包含单个值["as"].
它似乎是一个json表示。我怎么能读取该值。我的cookie名称是"设置"
答案 0 :(得分:1)
我已经解决了这个问题
<?php
$Cookie_name = $_COOKIE['settings'];
$decode = json_decode($Cookie_name);
$cnt = count($decode);
echo "<ul>";
for($i=0;$i<$cnt;$i++) {
echo "<li>".$decode[$i]."</li>";
}
echo "</ul>";
?>
答案 1 :(得分:0)
$cookie_name = "user";
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' does not exist!";
} else {
echo "Cookie is named: " . $cookie_name . "<br>Value is: " . $_COOKIE[$cookie_name];
}
试一试。它与使用$_SESSION
<强>更新强>
要循环每个cookie,您可以使用类似于此的内容:
foreach ($_COOKIE as $cookie_name => $cookie_value) {
print "$cookie_name = $cookie_value<br>";
}
将循环放在ul
标记内,并将必要的li
标记添加到print
。这样您就可以动态创建列表项。
答案 2 :(得分:0)
在php中,您可以像其他变量一样使用Cookie。或者至少与其他超全球变量一样。你这样读和写:
$my_var = $_COOKIE["cookie_name"];
$_COOKIE["cookie_name"] = $some_value;
要遍历所有这些,您可以使用foreach循环:
$my_array = array();
print "<ul><li>";
foreach($_COOKIE as $cookie_name => $cookie_value) {
$my_array[$cookie_name] = $cookie_value;
print "$_COOKIE[" . $cookie_name . "] = " . $cookie_value . "</li><li>";
}
print "</li></ul>";
这段代码会将所有Cookie输出到一个数组中,然后将其打印为无序列表(<ul>
)。
此外,您可以在一个$_COOKIE
条目中拥有多个值的原因是您在“arrary”中有一个数组,从而产生一个多维数组。其他programmind语言对此有更好的支持(例如在C ++中int my_array[x][y][z];
创建一个3维int数组。),但php有关数组的优点,你可以很容易地创建关联数组($my_array = array(["asdf"] => "a_value", ["b23"] => "another_value", ["another"] => "another_value");
)
答案 3 :(得分:0)
要诊断问题,我们还需要查看设置cookie的Javascript,以确保没有错误。
使用$ _COOKIE超全局可以在PHP中访问cookie。您特定的示例如下:
isset($_COOKIE['settings']) // returns true if cookie with name 'settings' is set
var_dump($_COOKIE['settings']) // dump contents of settings cookie
转储$ _COOKIE的内容也很有用,它会显示设置的cookie。您可以使用以下代码执行此操作:
var_dump($_COOKIE);
请发布设置cookie的相关JS,我会更新我的答案。问题是您如何设置cookie也决定了您如何访问它。例如,有一些选项允许您在设置时指定cookie的域和路径 - 这可能会阻止您在PHP脚本中访问它,即如果脚本位于与设置cookie的JS不同的页面上