从数据库获取会话值

时间:2014-04-08 19:50:20

标签: php mysql database session login-script

基本上我很难获得' user_id'数据库中的值并将其存储在会话中。

我有什么:

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

在MySQL数据库中,我有一个列为' user_id','用户名'和密码'。我的身份验证页面是:

<?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存储到会话中。 &#39; user_id&#39;是一个数值,由auto incriminate生成。

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

1 个答案:

答案 0 :(得分: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');
}
?>

备注