-3

我可以让用户登录,但我如何将他们的信息转移到其他页面?我想$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();
        }
        }
}
4

3 回答 3

3

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

session_start()只需调用,然后您就可以开始使用全局$_SESSION变量,这真的很容易。每个访问者的会话都是唯一的。

会议手册

和一个教程

于 2012-12-19T23:32:09.773 回答
0

我会将这些信息$_SESSION保存在整个站点中。当用户登录时,添加信息,在他们通过登录后,$_SESSION您需要保留。

于 2012-12-19T23:33:50.393 回答
-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 用于查询数据库并确定他们是否在某个时间范围内登录,比如一个小时。为此和其他目的,他们登录的时间记录在数据库中。

有关更多详细信息,请阅读有关会话的 PHP 手册。密切关注用户提交的评论;他们是无价的。

于 2012-12-19T23:36:18.220 回答