2013-03-27 2 views
0

Утро,HTML Специальные символы в DB и echo обратно на вход

Я создал небольшую форму для хранения некоторой информации в базе данных.

У меня есть magic_quotes_gpc отключен на моем сервере.

Если я ввожу " или знак £ в поле сохраняется в базе данных без проблем.

Когда я возвращаю его обратно с помощью php, он отображает, но если я использую значение в поле формы ввода, то " закроет поле значений.

<input type="text" name="variable" value="<?php echo $row[variable]; ?>" /> 

Я использовал htmlspecialchars вокруг значения ввода, и он работает.

<input type="text" name="variable" value="<?php echo htmlspecialchars($row[variable]); ?>" /> 

Но я посмотрел на с открытым исходным кодом корзины в качестве эталона, и они не используют htmlspecialchars, но хранят данные по-другому.

Я попытался с помощью метода urlencodes они использовали:

urlencode(html_entity_decode($_POST[variable],ENT_QUOTES, 'UTF-8')); 

, но это, кажется, чтобы сохранить как много цифр и знаков +, которые не отображают неправильно.

Я предпочел бы кодировать базу данных обновлений вместо использования метода i am с htmlspecialschars.

Но не совсем уверен, какой путь был бы лучше?

Спасибо

+4

«Я предпочел бы закодировать базу данных обновления вместо использования метода я с htmlspecialschars.» - Прекрати это хотеть. Кодирование данных как HTML непосредственно перед вставкой в ​​HTML является разумным подходом. Он сохраняет данные в чистом формате до последней минуты, поэтому, если вам когда-либо понадобится разместить его где-то, что не является HTML, все равно будет хорошо. – Quentin

+2

[Великий эскапизм (или: что вам нужно знать, чтобы работать с текстом в тексте)] (http://kunststube.net/escapism/) – deceze

ответ

-2

для хранения HTML символов изменить уставы, а затем хранить их:

<?php 
     $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); 
     echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt; 
?> 

Чтобы вернуть правильный символ HTML сделать декодирование как:

<?php 
     $str = "<p>this -&gt; &quot;</p>\n"; 

     echo htmlspecialchars_decode($str); 

     // note that here the quotes aren't converted 
     echo htmlspecialchars_decode($str, ENT_NOQUOTES); 
?> 

Для дополнительная информация относится к http://www.php.net/manual/en/function.htmlspecialchars.php

0

Возможно, попробуйте mysqli_real_escape_string($dblink, $string) вместо htmlspecialchars

0

вы можете использовать

htmlentities() function in php 
Смежные вопросы