Untuk beberapa alasan, kami juga perlu menghindari garis miring terbalik juga.
Jadi, saya percaya kode yang tepat adalah
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();
}
}
Untuk outputnya, gunakan
echo htmlspecialchars($_GET['q']);
stripslash tidak diperlukan di sini.
kutipan ajaib tidak akan membahayakan keamanan Anda jika Anda tidak menggunakannya.
charset berbahaya jika ada beberapa penyandian yang sangat langka tetapi hanya jika tidak disetel dengan benar. jika mysql(i)_set_charset
atau DSN (dalam kasus PDO) digunakan untuk tujuan tersebut - Anda aman kembali.
Untuk PDO, tag wiki seharusnya cukup untuk pemula, saya percaya