为了账号安全,请及时绑定邮箱和手机立即绑定

关于使用预处理防止sql注入的问题。

关于使用预处理防止sql注入的问题。

紫宸丶 2015-12-11 14:41:56
header("Content-type:text/html charset=utf8");$mysqli=new mysqli('localhost','root','***','test');if($mysqli->connect_errno){    die("Connect Error:".$mysqli->connect_error);}$mysqli->set_charset('utf8');$username=$_POST['username'];$password=md5($_POST['password']);$sql="SELECT * FROM t1 WHERE username=? AND password=?";$mysqli_stmt=$mysqli->prepare($sql);$mysqli_stmt->bind_param('ss',$username,$password);if($mysqli_stmt->execute()) {    $mysqli_stmt->store_result();    if($mysqli_stmt->num_rows>0){        echo "登陆成功";    }else{        echo "登陆失败";    }}如以上代码,为什么给password加上md5数据库就获取密码失败并且登录失败,而把md5去掉并且不使用md5加密passwrod就可以登陆成功,这是为什么?
查看完整描述

2 回答

已采纳
?
lynhao

TA贡献81条经验 获得超57个赞

因为你加密后你的密码已经变成加密后的样子,要加密的话你就在数据库创表时的字段也给它用md5加密,保持一致

查看完整回答
反对 回复 2015-12-11
  • 紫宸丶
    紫宸丶
    不行诶,我之前插入该密码的时候已经加密过了,是不是因为md5的加密不可逆的关系?
  • 紫宸丶
    紫宸丶
    已经解决了,不过还是谢谢你的回答!
  • lynhao
    lynhao
    ^_^
?
慕冬雪

TA贡献16条经验 获得超3个赞

楼上说的对,因为你数据库中的值并没有加密,但是你程序中向数据库请求时加密了密码,这样当然找不到,建议注册的时候就向数据库中存入加密后的密码

查看完整回答
反对 回复 2015-12-11
  • 2 回答
  • 0 关注
  • 1954 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信