使用 javascript 设置的 cookie,无法使用 PHP 识别(相同的域和路径)
Cookie set with javascript, not recognised with PHP (same domain and path)
这些是我的饼干:
我的饼干
我正在使用WAMP服务器从自己的计算机上运行我的网站。我从 http://127.0.0.1/Zulaijen/访问我的主页,这是设置cookie(用户和会话)的javascript功能:
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "; expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + expires;
}
当我使用javascript阅读它们时,它工作正常。我得到我的会话。然后我用下面的代码转到另一个名为"uploader.php"的PHP页面:
if(!isset($_COOKIE['TestCookie']))
setcookie("TestCookie", "Hello World!", time()+3600);
print_r($_COOKIE);
echo("Session: " . $_COOKIE['Session'] . "<br/>User: " . $_COOKIE['User'] . "<br/>");
结果是:
数组 ( [测试饼干] => 你好世界! ) 注意:未定义的索引:D:''wamp''www''Zulaijen''uploader中的会话.php 在第 30 行 注意:未定义的索引:用户在 D:''wamp''www''Zulaijen''uploader.php 第 30 行
这意味着我的PHP代码没有读取我用javascript设置的cookie。它只读取我用PHP代码(TestCookie)设置的那个。我不明白为什么。它们位于同一域和相同路径中。
您应该尝试设置 cookie 路径。可能是 PHP 和 JavaScript 的 cookie 路径不匹配,因此 cookie 不会在两者之间共享。
JavaScript cookie 路径:如何在 JavaScript 中保存 cookie 值时设置路径?
PHP 库基路径(请参阅路径部分):http://php.net/manual/en/function.setcookie.php
我终于找到了导致问题的原因(偶然)。这非常令人困惑,但它有一个非常简单的解决方案。
为了从PHP读取cookie,您必须从文件的最开头读取它们。
这样做:
<?php print_r($_COOKIE); ?>
在文件的开头(在任何HTML代码之前)打印我正确设置的每个cookie。即使您从 PHP 设置它们,如果您不从文件的开头开始设置它们,您将无法获取它们。
我之所以能够阅读我用PHP设置的那个,仅仅是因为我在阅读它之前就设置了它,或者看起来是这样。
- 如何识别我的网站中的慢速设备
- Javascript:使用绝对路径设置img src
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 如何在d3.js中返回路径的y坐标
- 复制图像路径以单击它
- 从模块内部访问Express装载路径
- JS文件的路径正在消失
- AngularJS指令只识别双向绑定类型
- 使用onclick绘制SVG路径
- jpm的默认Firefox路径没有'不起作用
- 如何使用jquery将base64图像路径转换为真实路径
- 使用 javascript 设置的 cookie,无法使用 PHP 识别(相同的域和路径)
- 要求无法识别 JS 路径
- 织物.js - 在新创建的路径上实现形状识别
- 识别Fabric JS中绘制的每条路径
- jQuery/JavaScript函数获胜't识别“t”-webkit剪辑路径”;
- 在jQuery中使用相对路径识别链接
- cookie如何识别名称、过期日期、路径
- 如何在jQuery中识别图像src是路径还是base64字符串
- stats.isFile()不能从路径中识别文件