MySQL gibi tırnak saklamak '

3 Cevap php

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.

3 Cevap

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);

Seconde parametresi için ENT_QUOTES ile fonksiyon htmlspecialchars () da &#039; tek bir teklif dönüştürür

htmlspecialchars($a, ENT_QUOTES);