PHP $ _SESSION变量

时间:2013-06-29 13:52:33

标签: php session

我正在使用PHP $ _SESSION变量和我网站的登录工作流程,我只想做一些澄清。就像Facebook一样,我想存储一个只有服务器知道的密码,用于签署发送到服务器和从服务器发送的每个请求。我最初的方法是生成一个随机字符串并将其存储在MySQL表中,但后来我了解了会话变量。我知道会话变量默认使用存储会话名称和ID的cookie来工作,对吗?没有任何实际数据存储在用户的计算机上?所以如果我想实现:


# assume that $rand_string is not null and a string
session_start();
$_SESSION['secret'] = $rand_string;

用户无法解码会话cookie并确定$rand_string的实际值,对吗?只是想确保数据是安全的,否则我将恢复到不太流畅的MySQL技术。我只是想到了易于访问和管理的会话变量。

4 个答案:

答案 0 :(得分:7)

会话数据存储在服务器端。

Cookie数据存储在客户端。

答案 1 :(得分:2)

我更喜欢通过生成guid`函数来做随机的事情,因为它会生成一个唯一的标识符,并且比简单随机更安全:

# assume that $rand_string is not null and a string
session_start();
$_SESSION['secret'] = com_create_guid();

是的, $ _ SESSION 变量存储在服务器端。

答案 2 :(得分:1)

是的,您是对的,用户只知道会话ID或类似内容,只需识别用户对应的会话。

其余数据暂时存储在服务器上。

访问者无法获得会话数据,除非您的网站上存在重大错误,我认为您不会这样做。

答案 3 :(得分:1)

你说的是对的。 $_SESSION中的所有数据只能在服务器上访问,但只有在会话没有超时的情况下才能访问。

尽管如此,您应该小心,可以非常轻松地捕获存储在cookie中的会话ID。有关详细信息,请参阅Sessions and Security