欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

问个session很简单的问题,我可能是在哪陷着了。

程序员文章站 2022-04-28 13:50:24
...
php用session值进行用户是否登录的判断,我常看到这样的例子:
就是有一个表单,输入 用户名和密码,然后在一个php页面进行验证,如果验证成功(就是从数据库中查找是否有用户名和密码相匹配),就生成如下sessoin
$_SESSION['username'] = 'csdn';
$_SESSION['pwd'] = 'pwd';


然后在其他页面进行判断 $_SESSION['username'] 是否为空,如果不为空,说明是登录了。。。

那我的问题就来了:$_SESSION 不是存在服务器上的吗?那多个用户登录了,$_SESSION['username'] 岂不是被重置了好多次,服务器怎么正确给客户端做区分呢???

我都晕了,我感觉 很简单的事,结果我愣是想不明白。。。肯定 是我哪里理解错了,请帮我指出来。
谢谢了


回复讨论(解决方案)

$_SESSION 由 session_start 函数产生
而 $_SESSION 的内容是 session_start 依据传入的 cookie 赋值的
所以不会出现你疑惑的情况

也就是说用户甲的 $_SESSION 和用户乙的 $_SESSION 虽然都是 $_SESSION,但内容是不一样的

session 会有一个从客户端传过来的session_id来标识不同的用户的,这个session_id是唯一的,所以楼主不用担心会混乱。 

每个通话都是唯一的...也就是上面所说到的 session_id,所以每一次浏览器和服务器端建立起通话的时候这个ID 都是唯一的,服务器会进行判断 我在和谁进行通话.

每个用户是基于seesion_id()来识别数据,$_SESSION的值是不一样的。


session 会有一个从客户端传过来的session_id来标识不同的用户的,这个session_id是唯一的,所以楼主不用担心会混乱。 



的确是这样的,我昨天自己也搞明白了的。我在两个浏览器,试,发现服务器生成 了两个不同的id,然后打开看,里边内容都是如下两个变量,所以确实是用sess_id来区分的。我搞明白了的。。。
session_start();$_SESSION['user'] = "baijiangkun";$_SESSION['pwd'] = "qinghai";var_dump($_SESSION);echo "s";