$ _POST / $ _GET Her şeyi kodlamak etmeyin. HTML-öncelemeli bir çıkış kodlama sorunu değil, bir giriş-kontrol biridir.
Çağrı htmlentities
(ya da, genellikle daha iyi, htmlspecialchars
) Sadece bazı düz metin alarak ve birleştirerek veya bir HTML sayfası içine yankılanan konum noktada. Yani kullandığınız metin gönderilen parametre veya veritabanından gelen olmadığını geçerlidir, ya da başka bir yerde tamamen. mysql_real_escape_string
sadece değişmez bir SQL string içine düz metin eklemek noktada diyoruz.
Bu script üstündeki kendi kutusunda tüm bu kaçan şeyler kıpırdamak ve sonra unutun cazip. But text preparation really doesn't work like that, ve bunu çift kodlanmış rezil onarılamaz tam veritabanı bulacaksınız yaptığı iddia eğer başka bir kaynaktan gelen verileri alarak çünkü, HTML sayfası ve güvenlik delikleri tersbölüler sen nokta vermedi (kodlanmış) parametrelerden daha.
Size hatırlama yükü mysql_real_escape_string
mysqli parameterised oluyor sorguları veya başka bir üst düzey veri erişim katmanı kullanılarak uzağa gitmek yapabilirsiniz. Bunun için, daha kısa bir adlandırılmış işlev, örneğin tanımlayarak htmlspecialchars
her zaman daha az rahatsız yazarak yükünü yapabilirsiniz.:
<?php
function h($s) {
echo(htmlspecialchars($s, ENT_QUOTES));
}
?>
<h1> Blah blah </h1>
<p>
Blah blah <a href="<?php h($link); ?>"><?php h($title); ?></a> blah.
</p>
veya farklı bir çiftleşmiş motoru kullanarak varsayılan HTML kodlar söyledi.