我是第一次使用php开发人员;
我以这种方式跟踪会话:
session_start();
if (!isset($_SESSION['user']->iduser)) {
die('Access denied. <br><a href=login.php>Please login</a>');
}
是正确的做法吗?
答案 0 :(得分:2)
你的代码看起来好像你把一个整个对象存储到一个会话变量中,这不是一个好主意(可能占用大量空间,存储太多数据,甚至可能没有序列化) /反序列化?)。
此外,如果您的用户尚未经过身份验证,但您的代码会因为$_SESSION['user']
尚未设置而发出警告 - 那么通过检查$_SESSION['user']->iduser
,您将检查某个属性/ null对象的值。您的代码应该检查if (isset($_SESSION['user'])) {
,然后可能验证。
我建议只在会话中存储“必需品”,例如用户的ID /用户名和加密密码。然后,在每个页面加载期间,您将根据数据库重新验证信息。这是每个页面加载的额外查询,但它是值得的(在我看来)。
答案 1 :(得分:1)
我想你真的在问这个问题:
通过会话中的唯一ID识别用户是否可以?
我的回答:是的。这通常是如何完成的,并且会在会话中正常工作。我不会这样使用cookie,但在服务器端会话存储中应该没问题。