php登陆代码出现问题,本人连接的是SAE
代码如下:...$mysql=newSaeMysql();if(empty($_POST['username'])||empty($_POST['userpwd'])){...
代码如下:
...
$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();
} 展开
...
$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();
} 展开
1个回答
2014-04-20
展开全部
你用的是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了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询