0

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

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;
 }
4

1 回答 1

0

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

     $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;
于 2013-05-27T11:37:54.553 回答