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