博主信息
博文 30
粉丝 1
评论 0
访问量 23634
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
初识pdo,与防sql注入
moon
原创
878人浏览过

使用PDO链接mysql数据库

  • PDO(PHP数据对象) 是一个轻量级的、具有兼容接口的PHP数据连接拓展,是一个PHP官方的PECL库,随PHP 5.1发布,需要PHP 5的面向对象支持,因而在更早的版本上无法使用。它所提供的数据接入抽象层,具有与具体数据库类型无关的优势,为它所支持的数据库提供统一的操作接口。目前支持多种数据库等。由于PDO是在底层实现的统一的数据库操作接口,因而利用它能够实现更高级的数据库操作,比如存储过程的调度等。

  • 创建数据库配置文件database.php

  1. <?php
  2. return [
  3. 'type' => $type ?? 'mysql',
  4. 'username' => $username ?? 'root',
  5. 'password' => $password ?? '',
  6. 'host' => $host ?? 'localhost',
  7. 'port' => $port ?? '3308',
  8. 'charset' => $charset ?? 'utf8',
  9. 'dbname' => 'chloe'
  10. ];
  • 创建connet.php文件引入database.php配置文件,并且链接数据库
  1. // 1. 把数据库连接配置文件引过来
  2. $config = require_once __DIR__ . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'database.php';
  3. extract($config);
  4. //dsn data source name 数据源名称 包括pdo驱动名称,host,port,数据库名称。
  5. // $dsn = 'mysql:host=localhost;port=3308;dbname=chloe';
  6. // $username = 'roots';
  7. // $password = '';
  8. // $pdo = new PDO($dsn, $username, $password);
  9. // var_dump($pdo);
  10. $dsn = sprintf('%s:host=%s;port=%s;charset=%s;dbname=%s', $type, $host, $port, $charset, $dbname);
  11. try {
  12. $pdo = new PDO($dsn, $username, $password);
  13. // var_dump($pdo);
  14. } catch (PDOException $e) {
  15. die('Connection error : ' . $e->getMessage());
  16. }

防sql语句注入

  • sql注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    例如一个简单的登录表单(这里把密码写成明文方便说明):

sql注入语句

当在表单中填写这样的语句进行提交登录时会出现这样的SQL语句

  1. select * from t_admin where admin_name='xxx' and admin_pwd='xxx'' or '1'

这样会查询出所有的用户信息,所有存在不安全隐患

  • 如何预防sql注入
    1.使用pdo预处理接入
  1. // 准备一条预处理sql语句
  2. $sql = "SELECT * FROM `user` WHERE `username`= ? AND `password` = ? ";
  3. // 准备要执行的语句,并返回语句对象
  4. $stmt = $pdo->prepare($sql);
  5. // 绑定参数到指定的变量名
  6. $stmt->bindParam(1, $name);
  7. $stmt->bindParam(2, $pwd);
  8. // 执行一条预处理语句
  9. $stmt->execute();
  10. $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学