1. 建立 PDO 連線
PDO 支援多種資料庫驅動,語法一致,適合實務使用。
new PDO()ERRMODE_EXCEPTION
PDO 連線
<?php
$pdo = new PDO(
"mysql:host=localhost;dbname=test;charset=utf8mb4",
"root",
""
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>當你開始連接資料庫與處理登入資料時,安全就變得非常重要。本頁將介紹 PDO、prepared statements、密碼雜湊與 XSS/SQL Injection 防護。
資料庫查詢用預備語句,密碼不要明文儲存,輸出到 HTML 前要做安全轉義。
PDO 支援多種資料庫驅動,語法一致,適合實務使用。
<?php
$pdo = new PDO(
"mysql:host=localhost;dbname=test;charset=utf8mb4",
"root",
""
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>絕對不要直接把使用者輸入字串拼接到 SQL 中。
<?php
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute([
":email" => "[email protected]"
]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($user);
?>使用 password_hash 與 password_verify 安全管理密碼。
<?php
$password = "mySecret123";
$hash = password_hash($password, PASSWORD_DEFAULT);
if (password_verify("mySecret123", $hash)) {
echo "登入成功";
}
?>PHP 不只產生 HTML,也常被用來輸出 API 回應。
<?php
header("Content-Type: application/json; charset=utf-8");
$data = [
"status" => "success",
"message" => "資料取得成功",
"items" => ["PHP", "MySQL", "Laravel"]
];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?>