1

这是昨天面试时被问到的问题之一!

根据我的理解......当用户登录网络应用程序时,我们启动一个会话并将所有数据存储在 $_SESSION 数组中(存储在服务器上但不存储在 Cookies 上)

当我们为登录和注册表单编写脚本时,cookies只是一个本地数据,我们不设置任何cookies来识别用户

如果会话数据存储在服务器上而不是 cookie 中,

我有自己的登录注册系统

http://dandnayak.in/lr

1) 我第一次登录 2) 清除 cookie 3) 刷新 4) 我什至没有点击注销按钮就退出了

当我删除 cookie 时,如何从任何当前帐户中注销!

$_SESSION & $_COOKIES 这种情况有什么区别?

4

3 回答 3

9

PHP 会话保存在名称类似sess_some_session_id(例如:)的服务器文件中,sess_vu3a4l18bkt24q5qimsav2r7d3并将some_session_id存储在一个名为 的 Cookie 变量PHPSESSID中。当您清除 Cookie 时,PHP 将无法识别属于当前用户的会话文件。这就是您退出的原因

于 2013-05-22T04:26:17.693 回答
1

服务器在客户端上存储一个 cookie,该 cookie 包含一个标识符,用于查找与当前客户端相关联的服务器上存储的数据。因此,虽然数据本身不存储在 cookie 中,但对数据的静态引用作为“键”存储在 cookie 中,以跨请求持久保存数据

这是一篇更深入解释的好文章:http ://www.tuxradar.com/practicalphp/10/1/2

于 2013-05-22T04:23:49.940 回答
0

这是应用服务器中的经典示例。

用简单的话回答你的问题,

应用服务器(PHP、ColdFusion、...)在给定时间托管许多应用程序。每个应用程序又为每个用户提供一个会话。因此,为了识别这种组合,它将会话令牌存储在 cookie 中。当您发出请求时,它会检查 cookie 中提供的信息以匹配其会话存储中的信息,并让您使用该应用程序。

当您删除 cookie 时,服务器无法识别您是否已经有会话或者您正在重新登录。它选择后者。

这就是您退出的原因。

于 2013-05-22T04:26:00.830 回答