0

我在这样的loginform.php文件中创建 cookie:

$time = time();
setcookie('myusername', $myusername, $time +60*60*24*200); // Sets the cookie username
setcookie('myuserid', $rows['userid'], $time +60*60*24*200); // Sets the cookie password
setcookie('myname', $rows['name'], $time +60*60*24*200);

login该文件位于我网站根目录中名为的文件夹中。

我可以loginform.php在根目录中的任何其他文件中检索 cookie,但不能在其他文件中检索 ..

可能是什么问题?

4

2 回答 2

3

创建 cookie 时,其根路径设置为创建的脚本的路径,在本例中为 /login - 下面的所有内容都无法访问 cookie,请在 setcookie 中添加“/”作为另一个参数

$time = time();
setcookie('myusername', $myusername, $time +60*60*24*200, '/'); // Sets the cookie username
setcookie('myuserid', $rows['userid'], $time +60*60*24*200, '/'); // Sets the cookie password
setcookie('myname', $rows['name'], $time +60*60*24*200, '/');
于 2013-01-12T10:15:25.180 回答
2

手册

cookie 可用的服务器上的路径。如果设置为“/”,cookie 将在整个域中可用。如果设置为 '/foo/',则 cookie 将仅在 /foo/ 目录和域的 /foo/bar/ 等所有子目录中可用。默认值是设置 cookie 的当前目录。

您需要将 cookie 路径设置为/从任何地方访问它。所以它会像,

setcookie('myusername', $myusername, $time +60*60*24*200, '/'); 

在 cookie 中设置用户名或用户 ID 等敏感信息不是一个好主意。任何人都可以改变价值并成为另一个人。

最好使用Session。甚至会话 id 也会保存在 cookie 中,但很难猜测另一个会话 id。

于 2013-01-12T10:17:26.220 回答