在我的登录函数中设置PHP会话用户ID

在我的登录函数中设置PHP会话用户ID,php,mysql,Php,Mysql,嗨,我想知道是否有人可以帮我使用我的登录功能。目前,它将检查用户名和密码是否与成员表中的条目匹配,然后将会话变量authorized设置为true。 Id需要帮助的是,当设置了授权的会话变量时,我还想设置一个用户Id会话变量,用户Id指的是数值,而不是名为memberID的members表列中的用户名 <?php function login($user, $pass){ //strip all tags from varible $us

嗨,我想知道是否有人可以帮我使用我的登录功能。目前,它将检查用户名和密码是否与成员表中的条目匹配,然后将会话变量authorized设置为true。 Id需要帮助的是,当设置了授权的会话变量时,我还想设置一个用户Id会话变量,用户Id指的是数值,而不是名为memberID的members表列中的用户名

    <?php
    function login($user, $pass){

       //strip all tags from varible   
       $user = strip_tags(mysql_real_escape_string($user));
       $pass = strip_tags(mysql_real_escape_string($pass));

       $pass = md5($pass);

       // check if the username and password combination exist in database
               $sql = "SELECT * FROM members WHERE username = '$user' AND password = '$pass'";
       $result = mysql_query($sql) or die('Query failed. ' . mysql_error());

       if (mysql_num_rows($result) == 1) {
          // the username and password match,
          // set the session
          $_SESSION['authorized'] = true;

          // direct to admin
          header('Location: '.DIRADMIN);
          exit();
       } else {
        // define an error message
        $_SESSION['error'] = 'Sorry, wrong username or password';
       }
    }
    ?>

假设数据库中的列名是userId,那么只需添加

$_SESSION['userId'] = $result['userId']; 
在设置会话的行下

所以,它看起来像

if (mysql_num_rows($result) == 1) {
      // the username and password match,
      // set the session
      $_SESSION['authorized'] = true;
      //set User Id
      $_SESSION['userId'] = $result['userId']; 

      // direct to admin
      header('Location: '.DIRADMIN);
      exit();
 }

用户ID列是memberID,因此我执行了以下操作:$\u SESSION['memberID']=$result['memberID'];但是当我尝试回显session变量时,什么也得不到。echo$_会话['memberID'];我是否应该在某个地方将memberID添加到查询中?不,因为您的查询是“SELECT*”,所以您将获得所有列。出于调试目的,您能告诉我
$result
是什么样子吗?。只需保存
$\u会话['result']=$result
,然后执行
var\u转储($\u会话['result'])
var\u转储($\u会话['result'];返回int(0)所以我猜您的查询不会返回任何结果。请仔细查看。感谢您的输入。当我var_转储会话变量memberID时,我得到NULL。当我知道members表只有一行,并且该行由值为1的memberID、值为admin的username和值为admin的password(md5哈希)组成时,我不明白为什么这不起作用。类似地,当我var_dump$result时,我得到int(0)。我尝试为username设置会话变量,但仍然得到NULL。这没有意义,因为它必须在进行身份验证之前验证这些值是否存在。