温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php登陆表单防注入练习

发布时间:2020-05-31 12:03:54 来源:网络 阅读:226 作者:一百个小排 栏目:开发技术

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

数据库:
php登陆表单防注入练习

简单的源码:
<!DOCTYPE html>
<html>
<head>
<title>后台表单登录页面</title>
<meta charset=UTF-8>
</head>
<body>
<center>
<h4>后台登录</h4>
<form action="" method="POST">
帐号: <input name='username' type='text'><br />
密码: <input name='password' type='password'><br />
<input type='submit' value='登录'>
</form>
</center>
</body>
</html>

<!--前后端都在一个页面上-->

<?php

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

//禁止输入单引号
if(stristr($user,'\'') || stristr($passwd,'\'') ){
die("<script>alert('账号密码有恶意符号,请重新输入')</script>");
}

//禁止添加可以sql注入的关键词
if(preg_match_all("/\/|#|and|or|order/",$user) || preg_match_all("/\/|#|and|or|order/",$passwd)){
die ("<script>alert('账号密码有非法字符,请重新输入')</script>");
}

$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();//关闭连接
}
?>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI