用户使用用户名和密码登录时获取用户 ID

Posted

技术标签:

【中文标题】用户使用用户名和密码登录时获取用户 ID【英文标题】:Obtain User ID when a user logs in using Username & Password 【发布时间】:2014-02-01 11:21:57 【问题描述】:

我需要输入我的 USER 表的 USER_ID 字段作为另一个表中的外键。 因此,我认为我需要在用户登录时开始一个会话。我很难让它在任何地方回显。我能够启动一个允许我回显 USERNAME 的会话,但不能为 ID 复制它。

请问有什么帮助吗?我的处理代码如下。我还粘贴了我暂时尝试回应它以进行测试的部分。

处理脚本:

<?php
session_start();
$error_message = array();
$error = false;
$dbhost     = "localhost";
$dbname     = "xxx";
$dbuser     = "xxx";
$dbpass     = "xxx";

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

$user = $_POST['uname'];
$password = $_POST['pword'];  

if($user == '') 
    $error_message[] = 'You have not entered the required username.';
    $error = true;

if($password == '') 
    $error_message[] = 'You have not entered the required username';
    $error = true;


$result = $conn->prepare("SELECT * FROM USER WHERE USERNAME= :un AND PASSWORD= :pw");
$result->bindParam(':un', $user);
$result->bindParam(':pw', $password);
$result->execute();

while ($rows = $result->fetch(PDO::FETCH_NUM)) 



if($rows > 0) 

$_SESSION['Logged_In'] = true;
$_SESSION['username'] = $user; 
$_SESSION['USER_ID'] = $rows['USER_ID'];
header('Location: index.php');


else

    $error_message[] = 'Your username and password are not correct. Try again.'; 
    $error = true;


if($error) 
    $_SESSION['ERROR_MESSAGE'] = $error_message;
    session_write_close();
    header("location: log_in.php");
    exit();


?>

我希望 USER_ID 出现在哪里:

<?php
         session_start();
         if(isset($_SESSION['Logged_In']))

    echo '<br><br>';
    echo 'You are logged in as ';
    echo $_SESSION['username'];
    echo '<br>';
    echo "ID = ".$_SESSION['USER_ID'];
    echo '<br>';
    echo '<a href="logout.php">
Click here to log out.</a>';

else
   
    echo '<br>';
    echo 'You are not logged in!<br>';
    echo '<a href="log_in.php">Click here to log in,</a><br>';
    echo '<a href="register.php">or click here to register.</a>';

?>

【问题讨论】:

session的问题是什么? 您是否尝试过使用 FETCH_ASSOC 而不是 FETCH_NUM ? @LucaIaco 工作完美!非常感谢:) :) @LucaIaco 您是否有机会回答这个问题,以便将这个问题标记为已回答? @Jon 好的,我已经完成了 ;) 【参考方案1】:

使用 FETCH_ASSOC 而不是 FETCH_NUM

【讨论】:

以上是关于用户使用用户名和密码登录时获取用户 ID的主要内容,如果未能解决你的问题,请参考以下文章

挖洞经验之某次任意用户登录漏洞挖掘

GCM,注册 ID 和处理用户登录/注销

jsp的问题!做用户登录时,怎样获取这个用户的ID ?然后根据用户ID 查询用户详情。

thinkPHP怎么获取登陆的用户ID啊?

关于java获取登录用户id的问题

登录时获取特定列的值(C# Mysql)