Af en eller anden grund skal vi også undslippe en skråstreg a> også.
Så den rigtige kode ville være, tror jeg
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();
}
}
Brug
til outputecho htmlspecialchars($_GET['q']);
strimler er ikke nødvendige her.
magiske citater vil ikke skade din sikkerhed, hvis du ikke vil bruge dem.
Charset er farligt i tilfælde af nogle ekstremt sjældne kodninger, men kun hvis de er forkert indstillet. hvis mysql(i)_set_charset
eller DSN (i tilfælde af PDO) blev brugt til formålet - du er sikker igen.
Med hensyn til PDO, en tag-wiki burde være nok til start, tror jeg