2024年10月03日 建站教程
PDO(PHP Data Object)是PHP提供的数据库访问抽象层,通过使用预处理机制,可以有效防止SQL注入攻击。预处理是指分两步执行查询:首先,给查询占位符(例如:?)然后执行查询。这种机制确保用户输入不会作为SQL语句的一部分直接执行,从而避免了SQL注入攻击。
具体示例如下:
$servername = "localhost"; $username = "root"; $password = "password"; $dbname = "myDB"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); }
利用PDO预处理来防止SQL注入攻击
// 获取用户输入的用户名和密码 $username = $_POST['username']; $password = $_POST['password']; try { // 使用预处理查询用户信息 $stmt = $conn->prepare("SELECT * FROM users WHERE username = :username AND password = :password"); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); // 执行查询 $stmt->execute(); // 获取查询结果 $result = $stmt->fetch(PDO::FETCH_ASSOC); // 验证用户名和密码是否匹配 if ($result) { echo "登录成功"; } else { echo "用户名或密码错误"; } } catch(PDOException $e) { echo "查询失败: " . $e->getMessage(); }
本文链接:http://so.lmcjl.com/news/14504/