2016-04-15 3 views
0

Можно ли использовать ENT_QUOTES и использовать любой способ для разрыва строки?PHP break break с ENT_QUOTES

$title = htmlentities($_REQUEST['title'], ENT_QUOTES); 

Когда я ввод в поле, например:

<input type="text" value="Teacher: Don't cheat at the exam<br /> 1. Rule<br /> 2. Rule<br /> 3. Rule"> 

И это нормально должно выглядеть следующим образом:

Teacher: Don't cheat at the exam 
1. Rule 
2. Rule 
3. Rule 

Но я получаю это:

Teacher: Don't cheat at the exam<br /> 1. Rule<br /> 2. Rule<br /> 3. Rule 

Может кто-нибудь мне помочь?

+1

Когда я пробую ваш код, выход «Учитель: не обманывайтесь на экзамене
1. Правило
2. Правило
3. Правило. – Barmar

+0

Вы используете 'strip_tags()' в реальном коде? – Barmar

+1

В вашем входном значении нет кавычек, поэтому 'ENT_QUOTES' не имеет значения. Он по-прежнему переводит '<' на '<' и '>' на '>'. – Barmar

ответ

0

Сама суть htmlentities() является преобразование некоторых символов в HTML-сущности, и это включает в себя <, которая становится &lt; и >, который становится &gt;. ENT_QUOTES здесь не имеет отношения.

Так что, если вы используете htmlentities() для фильтрации ввода (не уверен, что вы должны, и вы, вероятно, следует указать $_POST и т.д.), вы должны вывести его с противоположной функции, если вы хотите HTML для работы:

Пример :

$title = htmlentities($_POST['title']); 
... 
echo html_entity_decode($title); // outputs proper HTML 

Но лишенная больше контекста, этот пример не имеет смысла, и есть почти наверняка лучший способ сделать это в вашем проекте.

+0

'$ title = htmlentities ($ _ REQUEST ['title'], ENT_QUOTES); $ description = htmlentities ($ _ REQUEST ['description'], ENT_QUOTES); mysql_query ("INSERT INTO funn SET ac1 = '$ ac1', ac2 = 'po', ac3 = 'po', imglink = '$ imglink', title = '$ title', description = '$ description', publisher = '$ name', опубликовано = '$ опубликовано' ") или умереть (« Ваши данные не могут быть сохранены ».mysql_error());' –

+0

без ENT_QUOTES, когда вы добавляете это «или это», чем инъекция кода get sql ... I хотел бы использовать ENT_QUOTES и во всяком случае использовать перерывы? –

+0

Вы не должны использовать htmlentities() для ввода sanizationton для MySQL. Лучший способ - использовать подготовленные инструкции (мне лично нравится PHP-MySQLiDB, библиотека, которая их использует, и упрощает напишите определенные запросы). В противном случае используйте что-то вроде mysqli_real_escape_string(). – Ynhockey