【问题标题】:Getting session value from database从数据库中获取会话值
【发布时间】:2014-04-08 19:50:20
【问题描述】:

基本上,我很难从数据库中获取“user_id”值并将其存储在会话中。

我有什么:

我有一个登录页面,它要求用户的用户名和密码。提交后,他们将被带到身份验证页面。如果提交了匹配的组合,则授予用户访问权限 - 如果没有匹配的组合,他们将被重定向。

在 MySQL 数据库中,我有一列用于“user_id”、“username”和“password”。而我的认证页面是:

<?php
require "connect.php"; // connects to db
connection();

session_start();
$username=$_POST['username'];
$password=$_POST['password'];
$user_id=$row['user_id'];
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$_SESSION['user_id'] = $user_id;


$result= mysql_query("SELECT * FROM users WHERE username='$username' and password='$password' and type='user'");

if(($row = mysql_fetch_array($result)))
{       
print_r($_SESSION);
//header('Location: welcome.php');
}
else
{
header('Location: not-authorized.php');
}
?>

当我打印会话时,我会显示:

Array ( [username] => cm89 [password] => conrad1 [user_id] => ) 

我尝试了多种不同的方法,但无法将用户 ID 存储到会话中。 'user_id' 是一个数值,由自动入罪生成。

如果有人能让我走上正确的轨道,那就太好了。谢谢。

【问题讨论】:

  • 可爱的SQL injection attack 漏洞。这尤其HORRIBLE,因为您将密码明文存储在数据库中。这是什么站点,所以我可以将整个 IP 子网列入黑名单?
  • @MarcB 现在 - 让他以自己的方式破解 - 一次杀死一只鸟,现在是代码审查 - 一旦他把它放在那里 - 然后我们可以把他撕开

标签: php mysql database session login-script


【解决方案1】:

$row['user_id'] 不存在。你把它从稀薄的空气中拉出来。这就是为什么$_SESSION['user_id'] 没有价值。

您需要在查询数据库之后 获取该值。以前没有。

<?php
require "connect.php"; // connects to db
connection();

session_start();
$username=$_POST['username'];
$password=$_POST['password'];

$_SESSION['username'] = $username;
$_SESSION['password'] = $password;

$result= mysql_query("SELECT * FROM users WHERE username='$username' and password='$password' and type='user'");

if(mysql_num_rows($result))
{       
    $row = mysql_fetch_array($result);
    $user_id=$row['user_id'];
    $_SESSION['user_id'] = $user_id;
    // Or more concisely
    // $_SESSION['user_id'] = $row['user_id'];
    header('Location: welcome.php');
}
else
{
    header('Location: not-authorized.php');
}
?>

注意事项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 2016-10-06
    • 2020-09-11
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多