PHP存储没有会话的用户数据

时间:2010-05-26 22:56:21

标签: php oop

是否存储用户数据,如用户ID,电子邮件等,以便在网站登录后可以从网站的所有页面访问,但不使用会话或Cookie?

例如:

class User
{
  var $userid;
  var $username;
  var $email;

  .. methods..
}

登录 login.php

$currentUser = new User($_POST['username'])

现在,如果我不应该使用会话或cookie,如何从其他页面访问$ currentUser,例如 index.php

这样我就可以在 index.php

中执行以下操作
if ($currentUser->userid > -1)
{
  echo "you are logged in as: " . $currentUser->username;
}
else
{
  echo "click here to login";
}
之前我问了一个类似的问题here,但答案并没有满足我的需要。

3 个答案:

答案 0 :(得分:4)

如果你对OOP过分夸大并且拒绝直接与会话/ cookie交互,我强烈建议你简单地封装会话而不是重新构建它们。甚至像这样简单:

//oopsess.php
<?php
    class Session{
        ...
    }

    session_start();

    function getSession(){
        //return the session if one exists
        if (isset($_SESSION['sessionObject']))
            return $_SESSION['sessionObject'];

        //otherwise save and return a new one
        $_SESSION['sessionObject']=new Session();
        return $_SESSION['sessionObject'];
    }
?>

如果您想将数据客户端存储在cookie中,而不仅仅是存储会话ID客户端(这就是它的作用),那么很容易适应。

编辑:另外,考虑到OOP,如果你的代码都非常OOP,这实际上是一种保持代码清洁的真正好方法 - 不仅仅是满足你对OOP饥渴的渴望的一种方式;)

答案 1 :(得分:1)

我承认,这有点牵强,

编辑:这些网站似乎很受欢迎,明天他们将重新上线。基本上,该研究表明,仅浏览器就能够提供类似指纹的数据。

答案 2 :(得分:0)

  赛义德说“一个想法考虑哪个   我之前见过的是存储一个   会话ID作为cookie并保持   数据库中的会话。很酷的事情   关于这样做,它允许管理员   完整而轻松地控制会话。   另外,你可以实现整洁的东西   喜欢gmail的“退出其他会话”   特征。深思熟虑:)“

请注意,我们这样做并且效果很好。