Vì một số lý do, chúng tôi cũng cần thoát khỏi dấu gạch chéo ngược nữa.
Vì vậy, mã thích hợp sẽ là, tôi tin rằng
if(isset($_GET['q'])){
$_GET['q'] = trim($_GET['q']);
if(strlen($_GET['q']) >= 2){
$q = $_GET['q'];
$q = '%'.addCslashes($q, '\%_').'%';
// now we have the value ready either for escaping or binding
$q = mysql_real_escape_string($q);
$sql = "SELECT name, age, address FROM book WHERE name LIKE '$q'";
//or
$sql = "SELECT name, age, address FROM book WHERE name LIKE ?";
$stm = $pdo->prepare($sql);
$stm->execute(array($q));
$data = $stm->fetchAll();
}
}
Đối với đầu ra, hãy sử dụng
echo htmlspecialchars($_GET['q']);
ở đây không cần đến dải băng.
Các dấu ngoặc kép sẽ không gây hại cho bảo mật của bạn nếu bạn không sử dụng chúng. Bộ ký tự
nguy hiểm trong trường hợp một số mã hóa cực kỳ hiếm gặp nhưng chỉ khi được đặt không đúng cách. if mysql(i)_set_charset
hoặc DSN (trong trường hợp PDO) đã được sử dụng cho mục đích - bạn đã an toàn trở lại.
Đối với PDO, một wiki thẻ chắc là đủ cho người mới bắt đầu, tôi tin rằng