Php 用户类型为的登录面板问题

Php 用户类型为的登录面板问题,php,mysql,login,panel,Php,Mysql,Login,Panel,我有两个登录页面,用户名、密码和代理作为用户类型。 第一个在首页,第二个在网站内部。我已经写了下面的函数,但它不适合我 function auth_check_user1($login, $password, $agent ) { $query= 'SELECT * FROM ' . USERS_TABLE . ' WHERE login = "' . $login . '" AND password ="' . $password . '", AND user_category =

我有两个登录页面,用户名、密码和代理作为用户类型。 第一个在首页,第二个在网站内部。我已经写了下面的函数,但它不适合我

function auth_check_user1($login, $password, $agent )
{

     $query= 'SELECT * FROM ' . USERS_TABLE . ' WHERE login = "' . $login . '" AND password ="' . $password . '", AND user_category ="' . $agent . '"  LIMIT 1';
     $r = $db->query ($query);  



  if ($db->numrows($r)==1)
   {
    $f = $db->fetcharray($r);


    if ($f['login'] == $login && $f['password'] == $password && $f['user_category'] == $agent)
     $logged = TRUE;
    else 
     $logged = FALSE;
   }

 else
     {
     $logged = FALSE;
     }
 return $logged;
 }

这是因为查询中有语法错误,使用了不需要的逗号

     $password . '", AND user_category ="' . $agent . '"  LIMIT 1';
                   ^this comma is not needed
由于在查询中转义引号,您可能会遇到问题,只需按如下所示更改引号

 $query= "SELECT * FROM " . USERS_TABLE . " WHERE login = '" . $login . "' AND password = '" . $password . "' AND user_category ='" . $agent . "'  LIMIT 1';
此外,我不明白为什么要用变量从数据库中选择一行,然后用if条件对照变量检查返回的数据。我认为这是不必要的,我会删除if条件,因为变量已经在查询中被检查过了。所以你的代码看起来像这样

if ($db->numrows($r)==1)  {
    $logged = TRUE;
} else  {
    $logged = FALSE;
}
return $logged;

谢谢但我现在有了新的问题。当我选择错误的凭据时,它会给我一个错误,即用户名和密码错误,但同时它会重定向到正确登录后显示的页面。。如果(auth_check_user1($session->fetch('login'),$session->fetch('password'),$session->fetch('agent')){$sql='从'.USERS\u TABLE.'中选择第一个\u名称,id。'WHERE approved=1和login=“'.$session->fetch('login').”“LIMIT 1”;$r=$db->query($sql);/login\u user.php“>/index.php?req=logout”>}这对我不起作用。我在主页上添加了这段代码