保持用户信息

时间:2012-12-19 23:25:05

标签: php mysql

我可以让用户登录但是如何将他们的信息传递到其他页面?我希望$thisUser能够查询

的所有信息
$query = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";

以下是我登录的代码。

    <?php

require_once 'includes\constants.php';

class Mysql{
    private $conn;

    function __construct(){
        $this->conn = new mysqli(DB_SERVER,DB_USER,DB_PASSWORD,DB_NAME) or die('There was  a problem conecting to the database.');
    }

    function verify_username_and_pass($un, $pwd) {      
        $query = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";

        if($stmt = $this->conn->prepare($query)){
            $stmt->bind_param('ss',$un,$pwd);
            $stmt->execute();

            if($stmt->fetch()) {
                $stmt->close();
                return true;
        }
    }
    }

}

    <?php

require 'classes\mysql.php';

class Membership{

    function validate_user($un,$pwd) {
        $mysql = New Mysql();
        $ensure_credentials = $mysql->verify_username_and_pass($un,md5($pwd));

        if($ensure_credentials) {
            $_SESSION['status'] = 'authorized';
            header("location: index.php");
            } else return "Please enter a correct username and password";
    }

    function log_user_out() {
        if(isset($_SESSION['status'])) {
            unset($_SESSION['status']);

            if(isset($_COOKIE[session_name()])) 
                setcookie(session_name(),'',time() - 10000 );
                session_destroy();
        }
        }
}

3 个答案:

答案 0 :(得分:3)

HTML是无状态的,这意味着您无法在页面加载之间保存数据。但是,您可以使用称为PHP会话的东西,使您能够跨服务器调用存储数据(页面加载)。

只需致电session_start()然后开始使用全局$_SESSION变量即可。每个访问者的会话都是唯一的。

the manual for sessions

tutorial

答案 1 :(得分:0)

我会在$_SESSION中保留信息,以便在整个网站中保留该信息。使用登录后,在通过登录后将信息添加到您需要保留的$_SESSION

答案 2 :(得分:-2)

您可以创建的最简单的模型是...... ...

在调用会话的任何脚本的顶部:

session_start();

然后在会话中创建名称/值对:

$_SESSION['blnLoggedIn'] = $blnLoggedIn;

然后查询或测试存储的值:

echo $_SESSION['blnLoggedIn'];

然后可以在任何“安全”页面的顶部查询此值,如果用户不再登录,则可以将其重定向到登录页面。

if (!$_SESSION['blnLoggedIn']) {
    header('Location: http://www.example.com/login');
}
    [...'secure' page content...]
}

会话的问题在于它们只能持续一段任意时间(如果我记得的话,大约需要24分钟)。通过更多工作,您可以创建使用$_SESSION,cookie和数据库的登录模型,以确定在会话到期后是否仍应登录。有多种方法可以做到这一点,但最简单的方法是将用户名存储在一个vanilla cookie中。在会话到期时,当命中新页面时,cookie用于查询数据库并确定它们是否在特定时间范围内(例如一小时)登录。他们登录的时间记录在数据库中以用于此目的和其他目的。

有关更多详细信息,请阅读sessions上的PHP手册。密切关注用户提交的评论;它们非常宝贵。