查询语句:从admin表中查询
select字段 from表名 where条件
and => 要求 and 等式两边都成立 才 成立
or = > 要求 or 等式两边有一边 成立 才成立SQL注入核心: 用户输入的数据被当做代码进行
万能密码 :' or 1 = 1
-- (这是注释的意思)
#(警号注释只有mysql数据库专用)
最好的操作: -- qwe
and 优先级 比 or 高
现在主流防护: 使用正则表达式 来 过滤 用户传输的数据 【这就是为什么注册密码只能规定字母和下划线的由来,防止php数据库注入】
开发判断:
1.判断数据库能查到数据 2.判断你输入的用户名与数据库查到的用户名相同
3.你输入的用户名和密码 和 数据库查到的用户名和密码码 相同
正则 是 一个语法(编程语言都有,比如说cpp)
php的正则函数
preg_match_all(' ' ,' ') -- d第一个是规则;第二个是内容(就是字符串)
<?php echo preg_match_all('\o','abooosft') ?>
die() 代码执行到这里终止了
<?php echo 1; die(); echo 2333; ?> //如果是这样 <?php echo 12 die(' 吃席') echo 55 ?>
检测一定要放在执行之前,不然一定会出问题
正则的核心:
检测所有的数据 ,不用正则 的话
1 or 2 or 3 or 4
\d --可以代替1 2 3 这种数字的数据显示检测
\D --可以代替所以的非数字
\W -- 非单词字符
GET 传参不能给#
GET传参是有url编码的 比如 %27 就是等于 ' ' 的意思(这个可以上Baidu查询),url用来区分是数据 还是url编码
? 代表传输数据