简单的表单登录代码,了解sql注入,禁止单引号还有反斜杠\ # and or order关键字的提交

数据库:
php登陆表单防注入练习_第1张图片

简单的源码:



后台表单登录页面




后台登录



帐号: 

密码: 





//判断有数据才执行后端代码,什么都不输入还是前端登陆界面,防止前端没有数据,后端验证老是弹出
if(!empty($_REQUEST)){
//数据不为空和空格,赋值账号和密码,都转化为小写,两边去除空格,否则报错
$user = ! empty(trim($_REQUEST['username'])) ? trim(strtolower($_REQUEST['username'])) : die("");
$passwd = ! empty(trim($_REQUEST['password'])) ? trim(strtolower($_REQUEST['password'])) : die("");

//禁止输入单引号
if(stristr($user,'\'') || stristr($passwd,'\'') ){
die("");
}

//禁止添加可以sql注入的关键词
if(preg_match_all("/\/|#|and|or|order/",$user) || preg_match_all("/\/|#|and|or|order/",$passwd)){
die ("");
}

$conn = mysqli_connect('127.0.0.1','root','root','db_form'); //连接数据库
$sql = "select * from admin where username='$user' and password='$passwd'"; //查询语句,只要能找到该条记录,说明匹对正确,判断为真,登陆成功

$result = mysqli_query($conn,$sql); //取出查询结果,是个对象
$array = mysqli_fetch_array($result); //把结果对象变为数组取出数据
//var_dump($array);

//通过取数组里的键值,得到相应结果
//(能查到对应的用户名,结果为ture,显示登陆成功,取不到对应的结果,显示错误)
if($array['username']) {
echo '登陆成功!';
}
else{
echo '账号密码错误!';
}
$conn->close();//关闭连接
}
?>