如果$ u和$ 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'],则会话将不会注册。尽管该信息在数据库中是正确的,因为它在index.php成功时会显示第一个名称。
答案 0 :(得分:0)
在代码中,使用以下内容定义$d
:
$d = "user01";
以后再次使用它(一旦验证了用户名和密码):
$_SESSION['login_user']=$d;
如果要将保存的会话更改为用户全名,请将execcute
语句更改为query
语句并从数据库中返回该行。然后将具有用户姓名的列保存到会话中。
假设您将执行更改为查询 - 您可以使用以下内容:
$_SESSION['login_user']=$result['username'];