Ben databse bir metin kutusuna yazdığınız ne olursa olsun depolayan bazı PHP kodu var. I bob's apples
yazarsanız, o bob's apples
olarak veritabanında depolanır.
Ne sorun olabilir?
Bu depolama tablo latin1_swedish_ci harmanlama sahiptir.
Lütfen PHP
kod htmlentities ile HTML
kişilere özel karakter dönüştüren gibi görünüyor. Sen html_entity_decode özgün dize geri almak için fonksiyonu yararlanabilirler.
$a = "bob's apples";
echo htmlentities($a,ENT_QUOTES); // bob's apples
echo html_entity_decode(htmlentities($a,ENT_QUOTES),ENT_QUOTES); //bob's apples
Sizin HTML kötü bir fikir veritabanına, takmadan önce (ya htmlspecialchars()
veya htmlentities()
) ile dizeleri kaçan. Sen html_entity_decode()
hasarı onarmak için kullanabilirsiniz ama ilk etapta bunu yapmak için daha iyi değil.
HTML kaçan gereken zamanı genellikle SEÇİN sorgularından getirilen satır ile tarayıcıya çıktı öncedir:
XSS için bir Google yapmak.
Değil HTML öncelemeli size should mysql_real_escape_string()
ile veritabanına dize takmadan önce yapıyor "ekleyerek bölü" ile ilgisi yoktur. Bu, SQL enjeksiyon açıklarını önlemek için.
<?php $row = mysql_fetch_row($result);
echo htmlspecialchars($row['someField']); // good place to escape HTML.
<?php $str = htmlspecialchars($_GET['foo']); // bad place to escape HTML.
$str = mysql_real_escape_string($str); // good place to escape for DB.
$q = 'INSERT INTO .... VALUES (' . $str . ')';
mysql_query($q);