0

我前段时间在某个页面上找到了一个登录脚本,在查看检查用户是否有效的代码时,似乎有少量代码是多余的。

$qry = "SELECT username FROM users WHERE ".
"username = '". $username ."' AND password = '" . md5($password) . "'";
$result = mysql_query($qry);
if(mysql_num_rows($result) == 1) {
    while($row = mysql_fetch_assoc($result)) {
        $_SESSION['USERNAME'] = $username;
        $_SESSION['PASSWORD'] = $password;
    }
    session_write_close();
    header("location: memberpage.php");
} else { .... }

对我来说,while 循环似乎是多余的,因为 if 代码已经检查用户是否有效(返回 1 行)。我可以删除while循环并获得相同的结果,还是我应该像某种额外的安全措施那样真正检查行数是否有效?

4

3 回答 3

3

是的,这绝对是多余的,您可以安全地删除while循环。至于查询的安全性,请查看:

于 2012-06-14T06:25:57.490 回答
1

不需要while循环,如果没有结果则条件失败

于 2012-06-14T06:27:15.937 回答
0
 $result=db_query("SELECT username FROM users WHERE ".
  "username = '". $username ."' AND password = '" . md5($password) . "'");
 $res=db_fetch_array($result);
if(isset($res['username']))
{
   $_SESSION['USERNAME'] = $username;
    $_SESSION['PASSWORD'] = $password;

 }
于 2012-06-14T06:36:47.017 回答