php登陆代码出现问题,本人连接的是SAE

代码如下:
...
$mysql=new SaeMysql();
if(empty($_POST['username'])||empty($_POST['userpwd'])){ header('Location:/index.html');exit;}
if(isset($_POST['username']) && isset($_POST['userpwd'])){
$peLoginQ = "SELECT * FROM `customer` WHERE `username` = '".$_POST['username']."'AND `userpwd` = '".$_POST['userpwd']."'";
if(mysql_query($peLoginQ)){
header('Location:/index7.html');
exit;
}
else{
header('Location:/index8.html');
exit;

}
$mysql->closeDb();
}

你用的是SaeMysql,那请参见这里http://sae.sina.com.cn/doc/php/mysql.html#api,不要使用mysql_query()进行执行了,而是$mysql->runSql()或者$mysql->getData()进行执行;

另外说一下你的代码问题很多,问题一:存在注入漏洞,最经典的一句可以注入登陆的语句了,当$_POST['username']等于 admin’ or '1=1 时$_POST['userpwd']不论空与否,最后的sql语句就是

"SELECT * FROM `customer` WHERE `username` = 'admin' or '1=1' AND `userpwd` = '".$_POST['userpwd']."'";

这句很明显会查出用户名是admin的信息,去过滤下吧对post数据,可以使用addcslashes进行处理,不过验证等录的安全逻辑应该是先用用户名去查询该用户信息,如果存在在对于密码(如果加密了用同样加密方法处理判断是否一致,一致证明是该用户则登陆成功);问题二:empty和isset这两个语言结构建议你去看看手册,前面既然你判断了都不为空,那后面就没必要用isset了

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网