2012-10-09 196 views
-2

你好,我有一个大问题..我创建一个用户登录网站,但问题是,如果我有2个或更多的用户在数据库中,如果我尝试登录与我的第二个用户的凭据它只给我第一个用户的信息。任何帮助将不胜感激。PHP登录错误

的login.php

include '../init/init.php'; 

if (empty($_POST) === false) { 
    // ... 
    $username = $_POST['log_username']; 
    $password = $_POST['log_password']; 

    $login = login($username, $password); 
    if ($login === false){ 
     die(msg1(0, 'Password is incorrect.')); 
    }else{ 
     $_SESSION['id'] = $login; 
     die(msg1(1,"members.php")); 
     exit(); 
    } 
} 

users.php(我这里有我所有的用户功能)

<?php 

// ... 
function user_id_from_username($username) { 
    $username = sanitize($username); 
    $query_user_id = mysql_query("SELECT (`id`) FROM `users` WHERE `username` = '$username'"); 
    return mysql_result($query_user_id, 0, 'id'); 
} 

function login($username, $password) { 
    $id = user_id_from_username($username); 

    $username = sanitize($username); 
    $password = md5($password); 

    $query_login = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"); 
    return (mysql_result($query_login, 0) == 1) ? $id : false; 

} 
?> 

,这表明登录后的个人资料:

// ... 
if (logged_in() === true){ 
    $session_user_id = $_SESSION['id']; 
    $sql = mysql_query("SELECT * FROM users"); 
    $id = 'id'; 
    $username = 'username'; 
    $rows = mysql_fetch_assoc($sql); 
} 
$errors = array(); 

// show profile based on $rows 
+0

>'它只给我数据库信息中的第一位用户。' 您是否指''login.php'后访问者$ _SESSION ['id']'总是1?或者'members.php'总是显示第一个用户的信息? 您可能会尝试在查询结尾使用“LIMIT 1”,您只希望得到一个结果。 – MiniGod

+0

members.php总是显示第一位用户的信息..并且仍然无法使用限制1 –

+0

您拥有的2个用户名是独特的还是什么? –

回答

1

从上看评论部分中的代码我会建议将代码更改为:

$session_user_id = $_SESSION['id']; 
$sql = mysql_query("SELECT * FROM users WHERE `id`='$session_user_id'"); 

我打算假设您事先已经过消毒$_SESSION['id']。 “

+0

你有答案兄弟...非常感谢 –