我可以让用户登录但是如何将他们的信息传递到其他页面?我希望$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();
}
}
}
答案 0 :(得分:3)
HTML是无状态的,这意味着您无法在页面加载之间保存数据。但是,您可以使用称为PHP会话的东西,使您能够跨服务器调用存储数据(页面加载)。
只需致电session_start()
然后开始使用全局$_SESSION
变量即可。每个访问者的会话都是唯一的。
答案 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手册。密切关注用户提交的评论;它们非常宝贵。