如何从MYSQL定义当前用户ID?

时间:2016-04-09 09:57:50

标签: php mysql

如果您的网站启用了多个用户的注册,那么他们就有可能更新,删除或查看他们的信息。现在,如何定义当前用户的id,以便他们只访问他们的信息/ mysql行?

例如:如果你采用下面的db结构并且bob在线,我如何告诉页面bob是当前用户并且他的id =“1”并且它为每个在线用户执行此操作。

db结构示例:

ID |  name | Email 
 1 |  bob  | bob@example.com
 2 |  john | john@example.com

请注意这些是折旧功能 这是我的登录脚本,它只是向我发送重定向循环。这是用折旧函数编写的,如何更新它以使用PDO?

<?php
session_start();
include_once 'dbconnect.php';

if(isset($_SESSION['user_id'])!="")
{
    header("Location:login.php");
}

if(isset($_POST['btn-login']))
{
    $email = mysql_real_escape_string($_POST['email']);
    $upass = mysql_real_escape_string($_POST['upass']);

    $email = trim($email);
    $upass = trim($upass);

    $res=mysql_query("SELECT user_id, user_name, user_pass FROM users WHERE user_email='$email'");
    $row=mysql_fetch_array($res);

    $count = mysql_num_rows($res); // if uname/pass correct it returns must be 1 row

    if($count == 1 && $row['user_pass']==md5($upass))
    {
        $_SESSION['user_id'] = $row['user_id'];
        header("Location:index.php");
    }
    else
    {
echo '<div class="invalid-message text-center">Email or password is  invalid</div>';   
    }

}
?>

1 个答案:

答案 0 :(得分:1)

你需要从不同的角度来处理这个问题 - 简单地说,有一个用户有一个id和一个名字,你需要支持几个步骤来思考该用户如何获得该ID以及如何做他/她登录。

您需要创建一个登录页面,该页面将使用名称/密码并根据数据库中存储的数据进行检查,如果正确,则允许用户继续使用页面。如果不正确 - 您需要允许他们重新输入详细信息(例如,如果他们错误输入了p / w)或者如果他们没有帐户(因此没有ID)就注册。

请注意,密码不得以纯文本格式存储在数据库中,并且应进行哈希处理(例如使用SHA 256加密)并加密,并且这是您在登录时检查的笔记本的哈希和盐渍版本。

成功登录后,您启动会话并将与用户签名相关的内容的数据库行分配给新会话,然后从该会话中将从session_start中使用id和名称( )因为我在这里。

总而言之 - 当他们登录时,假设登录正确,然后您将详细信息分配给会话并将session_start()包含到您希望包含在会话中的每个页面,然后您可以通过以下方式引用用户: $ userID或$ userName。

一旦你开始你的会话,你可以使用这样的东西来识别用户的名字和id,这将在你有session_start()的每个页面上都可用:

if(!empty($_SESSION['user']) )
    {
        $userID=$_SESSION['user']['id'];
        $userName=$_SESSION['user']['name'];
    }....

当用户想要注销或您想要删除与该用户活动相关的会话详细信息时,您可以使用:

unset($_SESSION['user']);

然后您可以将它们重定向到另一个页面

header("Location: index.php");