什么';这个php登录代码有问题


What's wrong with this php Login Code?

无论我做什么,我都会得到"错误的用户名或密码"已经尝试了不同类型的解决方案,但都无济于事。

//header('Access-Control-Allow-Origin: *');
include('db.php');
// username and password sent from form
$myusername=$_POST['username'];
$mypassword=$_POST['password'];
// To protect MySQL injection 
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM users WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

        echo '{"type":"1",'.
            '"item": "Logged In"'.
            '}';
}
else {
echo '{"type": "0",'.
            '"item":"Wrong Username or Password"'.
            '}';
}

有人能帮忙吗?提前感谢!

这可能有多种原因。

  1. 您的用户名或密码不正确(值得检查此类错误)
  2. 您的数据库连接有问题!(启用错误报告和调试功能)
  3. 您对发布的数据有问题。当您在不知情的情况下获取而不是POST时,有时会发生这种情况
  4. 或者,您的密码或用户名包含转义后未正确匹配的字符串

编辑

还有其他几个建议给你!始终使用mysql准备的语句以获得最大的安全性,并且不赞成使用mysql_的函数使用mysqli_替代方案。你使用stripslashes表明你正在使用magic_quotes_,这再次被劝阻!:)

我建议您查看所使用函数的相应手册页面,并注意返回值。例如,如果你转到mysql_query()并滚动经过«这个扩展从PHP 5.5.0开始就不推荐使用,并且将来会被删除»警告,你会看到:

对于返回结果集的CCD_ 5[…]等语句,mysql_query()在成功时返回资源,或者FALSE在错误时返回资源。

类似于mysql_num_rows():

成功时结果集中的行数,失败时为FALSE

一切都表明其中一个正在返回FALSE

依靠结果集计数来确定是否有匹配是一种有风险的技术(它可能有效与否取决于您的设置)。运行COUNT(*)或只是尝试获取第一行更为坚如磐石

一些随机结论:

  • 不要忽略错误检查
  • 如果我是你,我就不会浪费时间学习一个过时的扩展
  • stripslashes()建议在服务器中启用magic_quotes。如果是这种情况,请在损坏的数据涌入之前禁用它

stripslashes()的一个例子是,当PHP指令magic_quotes_gpc打开时(在PHP 5.4之前,它默认是打开的),并且您没有将这些数据插入到需要转义的位置(如数据库)。例如,如果您只是直接从HTML表单输出数据

mysql_real_sescape_string--转义字符串中的特殊字符,以便在SQL语句中使用。

根据我的视图mysql_real_eescape_string,此函数还从您的密码和用户名中转义特殊字符。每次在用户名或密码中发现任何特殊字符时,都会将其删除。并且总是给出行数为零。。。