【发布时间】: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