|
|
|
| Помогите, пожалуйста, в сообщениях перевод строки оставить при наличии функций:
$message = htmlspecialchars($message);
$message = mysql_real_escape_string($message);
а то получается очень большая каша, когда нужно делать абзацы :(( | |
|
|
|
|
|
|
|
для: 1prom
(05.02.2011 в 15:32)
| | Что вы понимаете под "переводами строк"? Если \n или \n\r, то они там и остануться.
А если <br> (и при этом вышеуказанных спецсимволов нет), то стоит заменить <br> на \n перед обработкой. | |
|
|
|
|
|
|
|
для: neadekvat
(05.02.2011 в 15:52)
| | есть поле как в этом форуме
<textarea class=input style="padding-right: 10px;" cols=110 rows=15 name=message></textarea>
когда мы жмем на enter курсор идет на след. строку. так и у меня.
Но при записи в БД у меня такой текст теряет обрывы строк.
Я не знаю, с пом. чего реализуется така задача - чтобы и текст от спец. символов фильтровался и переводы строк оставлял... | |
|
|
|
|
|
|
|
для: 1prom
(05.02.2011 в 16:07)
| | Как вы узнали, что что-то теряется?
К тому же, htmlspecialchars лучше использовать непосредственно перед выводом в поток, а не перед записью, чтобы данные хранились в первоначальном виде. | |
|
|
|
|
|
|
|
для: neadekvat
(05.02.2011 в 16:10)
| | Да, я узнал, потому как использую фильтры пере записью в БД. Думаю так и нужно. Или я не прав? | |
|
|
|
|
|
|
|
для: 1prom
(05.02.2011 в 16:21)
| | > htmlspecialchars лучше использовать непосредственно перед выводом в поток, а не перед записью, чтобы данные хранились в первоначальном виде.
И вы не ответили, как узнали, что переносов строк нет. Просто потому, что вы применяете htmlspecialchars? Так он не трогает переносы строк. | |
|
|
|
|
|
|
|
для: neadekvat
(05.02.2011 в 16:24)
| | neadekvat - я не знал, что htmlspecialchars не съедает переносы... так откуда же они могут пропадать... от mysql_real_escape_string что ли? | |
|
|
|
|
|
|
|
для: 1prom
(05.02.2011 в 16:36)
| | Попробуйте добавить в бд следующий текст, используя mysql_real_escape_string
А потом выведите его на экран (прежде достав из бд, конечно же), используя htmlspecialchars, и посмотрите исходный html код страницы.
Потом для интереса выведите на страницу этот же текст, но иначе: nl2br(htmlspecialchars()); | |
|
|
|
|
|
|
|
для: neadekvat
(05.02.2011 в 16:39)
| | Ура! Я доволен как дитя!!!!
Второй вариант работает!
Спасиб neadekvat за терпение к моему незнанию) | |
|
|
|
|
|
|
|
для: 1prom
(05.02.2011 в 16:07)
| | Даже если вы поместите <br> в textarea, первод строки вы не получите в ней, нет для нее HTML, для нее все текст. | |
|
|
|
|
|
|
|
для: sim5
(05.02.2011 в 16:12)
| | Да, я знаю, но какие функции безопасности тогда лучше использовать? | |
|
|
|
|
|
|
|
для: 1prom
(05.02.2011 в 16:22)
| | mysql_real_escape_string перед тем, как записать в базу данных.
htmlspecialchars перед тем, как вывести в браузер.
Это в общем случаи.
А еще лучше - посмотрите на задачу 21 (и на ее решения в разделе задач). | |
|
|
|
|
|
|
|
для: 1prom
(05.02.2011 в 16:22)
| | В базу свою вы можете помещать все что душа пожелает, даже "страшный" JavaScript. Если вы хотите, чтобы он исполнялся у клиента, то выводите как есть, а нет, значит пропускаете через htmlspecialchars. При выводе используйте эту функцию, а не при записи, меньше лишних хлопот будет. | |
|
|
|