-2

こんにちは、大きな問題があります。ユーザー ログイン サイトを作成していますが、問題は、データベースに 2 人以上のユーザーがいて、2 番目のユーザーの資格情報でログインしようとすると、最初のユーザー情報しか得られないことです。 . どんな助けでも感謝します。

ログイン.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
4

1 に答える 1

1

コメント セクションのコードから判断すると、コードを次のように変更することをお勧めします。

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

$_SESSION['id']事前に消毒したとします。

于 2012-10-09T05:11:14.453 に答える