2012-10-09 195 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

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