计算SQL选择行。 Count = 0,它应该是1

时间:2014-01-22 01:34:16

标签: php sql

      $result=mysql_query("SELECT * FROM superhidden WHERE username = '$username' AND  password='$password'");



      $credentials = mysql_num_rows($result);

      echo $credentials;

这与0相呼应!当$ username = admin和$ password = admin ...并且supperhidden表包含一行admin |管理员

1 个答案:

答案 0 :(得分:1)

我要检查的第一件事是表格列和$username/$password变量中的前导或尾随空格。

您可以使用以下内容检查数据库中的前导或尾随空格:

select    *
  from    superhidden
 where    username like ' %'
    or    username like '% '
    or    password like ' %'
    or    password like '% '

您可以使用var_dump检查变量。


当然,几乎所有所有 PHP / MySQL问题都有近乎强制性的评论:

  • {@ 1}}函数已弃用,您应使用其中一个newer APIs
  • 使用没有消毒的用户输入是一个坏主意。您应该确保mysql_*$username都不能用于SQL注入攻击。搜索parameterised queriesSQL injection了解更多详情。

以明文形式存储密码通常也是一个坏主意,正如大量数据“盗窃”所证明的那样,最新的数据是美国的Target,其中约有7000万客户受到影响。有一个很好的质量保证here可以提供一些指导。