如果$you和$d匹配,会话将注册。 但是,如果我将$d字符串更改为其他任何内容,即使其他所有内容都通过,会话也不会注册。 我想以存储在表用户中的用户全名注册会话。 有什么我没有看到的吗?
<?php
include('conn.php');
$u = $_POST['user'];
$p = md5($_POST['pass']);
$sql = "SELECT first_name, last_name, user, pass FROM users WHERE user = :user AND pass = :pass";
$q = $conn->prepare($sql);
$q->bindParam(":user", $u);
$q->bindParam(":pass", $p);
$q->execute();
$login = $q->fetch();
$d = $login['user'];
if($login['user']){
session_start();
$_SESSION['login_user']=$d;
header('Location: index.php');
}
else{
header('Location: login.php');
}
?>
编辑:我已经编辑以显示我的意思的更好示例。 如果我将变量$d更改为 $login['first_name'],则会话将不会注册。 即使该信息在数据库中是正确的,因为它在索引上显示名字.php当它成功时。
在代码中,$d
是使用以下方法定义的:
$d = "user01";
稍后再次使用它(一旦用户名和密码被验证)来:
$_SESSION['login_user']=$d;
如果要更改保存为用户全名的会话,请将 execcute
语句更改为 query
语句,并从数据库中返回该行。然后将具有用户名的列保存到会话中。
假设您将执行更改为查询 - 您可以使用如下内容:
$_SESSION['login_user']=$result['username'];