首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个php登录代码有什么问题?

问这个php登录代码有什么问题?
EN

Stack Overflow用户
提问于 2013-06-26 23:03:35
回答 3查看 111关注 0票数 1

无论我做什么,我总是得到“错误的用户名或密码”已经尝试了不同类型的解决方案,但都没有帮助。

代码语言:javascript
复制
//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"'.
            '}';
}

有谁能帮帮忙吗?非常感谢您的支持!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-26 23:13:14

这可能有各种各样的原因。

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

编辑

给你几个其他的建议!为了获得最大的安全性,请始终使用mysql prepared语句,并且不建议使用mysqli_替代函数与mysql_一起使用。您使用stripslashes提示我您正在使用magic_quotes_,这仍然是不受欢迎的!:)

票数 3
EN

Stack Overflow用户

发布于 2013-06-26 23:24:50

我建议您查看您使用的函数的相应手册页面,并注意返回值。例如,如果您转到mysql_query()并滚动到«此扩展已从PHP5.5.0开始弃用,并将在未来删除»警告,您将看到以下警告:

用于SELECT的

...和其他返回结果集的语句,如果成功则返回资源,如果出错则返回FALSE。

与mysql_num_rows()类似

成功时为

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

一切都表明其中一个返回的是FALSE。

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

一些随机的结论:

  • 不要忽略错误检查。
  • 如果我是你,我不会浪费时间学习过时的magic_quotes表明你的服务器上已经启用了。如果是这种情况,请在损坏的数据涌入之前将其禁用。
票数 0
EN

Stack Overflow用户

发布于 2013-06-26 23:32:28

使用stripslashes()的一个示例是,当PHP指令magic_quotes_gpc为on时(PHP5.4之前的默认设置为on ),并且您不会将此数据插入到需要转义的地方(例如数据库)。例如,如果您只是简单地从HTML表单直接输出数据。

SQL -在mysql_real_escape_string语句中使用的字符串中的特殊字符。

根据我的观点,mysql_real_escape_string,这个函数也可以从你的密码和用户名中转义特殊字符。每次在用户名或密码中发现任何特殊字符时,都会将其删除。并且总是给出行数为零..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17323742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档