PHP $_SESSION Variables


PHP $_SESSION Variables

我在网站的登录工作流中使用了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技术。我只是喜欢易于访问和管理的会话变量。

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

Cookie数据存储在客户端。

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

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

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

是的,你是对的,用户只知道会话ID或类似的东西,只是用来识别用户对应的会话的东西。

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

访问者无法获得会话数据,除非你的网站上有重大错误,我认为你没有。

你说的是正确的。$_SESSION中的所有数据只能在服务器上访问,但前提是会话没有超时。

尽管如此,您应该小心,存储在cookie中的会话ID可以很容易地被捕获。有关详细信息,请参阅会话和安全性。