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 { .... }

if-code はユーザーが有効かどうかを既にチェックしているため (1 行が返されます)、while ループは冗長に見えます。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 に答える