PHP登录和会话建立

时间:2016-05-14 12:52:01

标签: php login

我有一个问题,我搜索了一下但在我的特定情况下找不到任何可以帮助我的东西。

我说到了,我创建了一个小函数来记录log(),当然步骤变量$ username和$ password,一切正常。

问题在于昨晚我做了一个小小的改动,在SESSIONS通过后插入了一串代码,后者是setcookie等等,因为我相信用户的连接可以持续很长时间时间(我没有专家)。

今天早上,会话是定时课程,它进行了新的登录,但数据未通过。 (因此,用户帐户框不会刷新您的用户名等。)

我会发布一些代码:

class User {

    private $db;
    private $username;
    private $password;

    /**
     * Construct
     * @param type $pdo
     */
    function __construct($pdo){
        $this->db = $pdo;
    }

    public function login($username, $password){   
        $this->db->query("SELECT * FROM users WHERE username = :username AND status = :status LIMIT 1");
        $this->db->bind(':username', $username);
        $this->db->bind(':status', 1);
        $row = $this->db->single();
        $count = $this->db->rowCount();
            if ($count > 0) {
                if (password_verify($password, $row['password'])) {
                    $_SESSION['session'] = [
                        'id' => $row['id'],
                        'username' => $row['username'],
                        'email' => $row['email'],
                        ];  
                    return true;
                } else {
                    return false;
                }
            }
    }


    public function isLoggedIn() {
        if (isset($_SESSION['session'])) {
            return true;
        }
    }

我不明白发生了什么,我希望我能够充分解释,我为我糟糕的英语道歉。

另一个问题是,保护页面安全吗? 有些用户告诉我注册令牌,但不知道该怎么做。

谢谢

2 个答案:

答案 0 :(得分:0)

尝试删除

  

""

发送电子邮件' => $行['电子邮件&#39],

是的,如果没有开始你的会话,请使用

<?php session_start() ?>

答案 1 :(得分:0)

  

获取PHP会话变量值

     

会话变量不会单独传递给每个新页面,   相反,它们是从我们在开始时打开的会话中检索的   每页(session_start())

直接来自http://www.w3schools.com/php/php_sessions.asp。在您的情况下,您必须开始session。您可以使用session_start();开始会话。但请记住在脚本开头做一次。