旅游网站策划书范文,自己注册公司,网站建设优化服务咨询,南京市建设档案馆网站PDO#xff1a;php5
假如以下是一个简单的登录处理#xff1a;
使用PDO连接mysql首先#xff1a;
新建数据库
new PDO(mysql:hostlocalhost;dbnametest,root,root);
host:服务器 dbname:数据库名 后面两个分别是帐号和密码 默认…PDOphp5
假如以下是一个简单的登录处理
使用PDO连接mysql首先
新建数据库
new PDO(mysql:hostlocalhost;dbnametest,root,root);
host:服务器 dbname:数据库名 后面两个分别是帐号和密码 默认不是长连接
如果想使用长连接需要在后面加入参数
new PDO(mysql:hosthost;dbnamename,user,pw,array(PDO::ATTR_PERSISTENT true) );
看如下简单示例在这里是单独说明所以我没有加其他的东西
?php//接收前端传过来的变量$name$_POST[username];$pwd$_POST[password];//这里新建PDO连接在这里我是本地测试的所以host我使用了localhost 数据库名为test帐号为root密码也是root$stmt new PDO(mysql:hostlocalhost;dbnametest,root,root);//使用prepare进行预处理其中:name和:pwd是我们等下要传入的变量值这些都是占位符$stmt $stmt-prepare(SELECT * FROM user1 WHERE user1 :name and pw1 :pwd);//以上的准备都做好了之后我们使用execute()方法负责执行准备好的查询//该方法需要有每次迭代执行中替换的输入参数在这里就是:name和:pwd 作为数组将值传递给方法//从而值替换掉其中占位符//当然也可以使用bindParam但是我还是喜欢这种简单的方式毕竟人懒$stmt-execute(array(name $name,pwd$pwd));while ($row $stmt-fetch()) {print_r($row);}注释已经说明了要说的内容最后面使用while输出查询到的值这样就可以防止sql注入如果不行那么请自行测试输入如’ or 11# 我们看我们的’ or 11#如果我们的name输入的是’ or 11#注意 ’ or 11# 前面有一个单引号那么如果我们的sql语句本是如下
SELECT * FROM user1 WHERE user1123 AND pw1234
把user1的值改为了 ’ or 11# 后。 变成了
SELECT * FROM user1 WHERE user1 OR 11# and pw1234
其中由于sql中#代表到此结束那么说明后面的and pw1’234’都将无效那么我们的sql语句就等于变成了如下语句
SELECT * FROM user1 WHERE user1 OR 11
由于11是肯定成立的那么此句sql语句中的where条件将会永远正确此时语句变成或者说就等于了如下语句
SELECT * FROM user1 WHERE TRUE
或者说
SELECT * FROM user1
那么就会登录成功绕过了此次登录。