密码验证

时间:2011-09-07 10:57:08

标签: php

我在PHP中开发了代码,但它不起作用。有时代码可以工作,但大部分时间都没有。问题在于显示密码是否有效。我的朋友忘记改变了,但我的问题只显示无效,即使我输入了有效的用户名和密码..plz帮助我

if(isset($_POST['submit']))
{
$con = mysql_connect("localhost","root","");
$db = mysql_select_db("billmailid", $con);
        if (!$con)
            {
        die('Could not connect: ' . mysql_error());
            }
$username=$_POST['usernameid'];
$password=$_POST['passwordid'];

$result = mysql_query("SELECT * FROM login");


$check = mysql_query("SELECT username FROM login WHERE username = '$username' && password= '$password'") ;

$check2 = mysql_num_rows($check);

if($check2==1)
  {
   echo "valid";
  }
else
  {
  echo "invalid";
  }
}
?>

3 个答案:

答案 0 :(得分:3)

好吧,首先,如果你改写问题标题和正文,添加示例,错误以及一般情况下,它会很棒。

SQL ||中的第二个是OR&&AND。你应该从那里开始。

第三 - 你应该真正阅读SQL注入。而且我不是指XKCD漫画。 在following link中,您可以找到有关如何对数据库和用户进行清晰安全查询的一些示例和指南

Forth - 你最好不要使用用户空root密码,并且不要使用“root”作为网站用户。

编写保存代码有时会很痛苦,但是越快启动它就越自然。此外,“使”应用程序安全比建立安全更困难。

enter image description here

答案 1 :(得分:0)

而不是||在你的mysql查询中将是一个良好的开端。更重要的是,你有一个巨大的安全漏洞。逃避输入

http://www.php.net/manual/en/function.mysql-real-escape-string.php

http://en.wikipedia.org/wiki/SQL_injection

否则,这不是一个糟糕的开始,继续尝试,你不是一百万英里之外。

答案 2 :(得分:0)

其他易受sql注入攻击的事情还有一些。

你有一个不必要的mysql查询,$result是一个mysql查询,但没有被使用。

您的支票查询使用的|| OR应为&&AND这意味着登录必须与两个值中的一个相匹配才能恢复结果。这会导致一些问题。

请求只需要匹配两个值中的一个,因此任何有效的用户名或密码即使它们没有配对也会导致返回行。 要么 如果两个登录具有相同的密码,则会返回2行,这意味着if($check==1)语句将失败。