Эта тема на forum.dklab.ru


netghost: Enter в гостевой книге
Можно поинтересоваться, как на вашем форуме вы добиваетесь сохранения абзацев введенного сообщения?
1-ая строка (Enter)
2-ая строка ....
Очень глупая ситуация конечно :)
Использую <textarea name='mn'> . Это хранится в самой $mn ? Заранее благодарен
chin:
В ней хранятся символы перевода строки, а именно - \n
Для того, чтобы при выводе в html переводы были видны, можно использовать два варианта:
1. обрамить вывод тегом <pre>:
echo "<pre>".$mn."</pre>";
2. выводить текст через специальную функцию, которая заменяет все \n на хтмл-овый <br />
echo nl2br($mn);

Читайте так же про register_globals и все такое...
Юрий Насретдинов:
Наиль
Ну, вообще говоря, в таком случае не мешало бы ещё через htmlspecialchars текст сообщения пропускать...
chin:
Наиль
Да, это обязательно:
$mn = htmlspecialchars($mn);
Это значит, что сообщения не смогут нести собой никакий html код. Например:
$test_string = "<b>this is bold text</b>";
echo $test_string;
Выведет: this is bold text
$test_string = "<b>this is bold text</b>";
$test_string = htmlspecialchars($test_string);
echo $test_string;
Выведет: <b>this is bold text</b>
Все это для того, чтобы пользователи не смогли использовать html код на Вашей гостевой. Например, если такого фильтра в гостевой не имеется, я могу спокойно прикрепить туда свой сниффер и благодаря этому знать IP всех пользователей, их cookie и многое другое. Так что не пренебрегайте этой полезной функцией - htmlspecialchars().
Удачи!
netghost:
Юpий Насрeтдинов,chin
Большое спасибо за советы - очень дельные. А я избавляюсь от тегов напрочь, чтобы вoобще никаких кодов вписать нельзя было.
strip_tags($mn)
Конечно пользователь будет несколько урезан в возможностях оформления, но безопасность 100% :)
Дмитрий Котеров:
Не надо использовать strip_tags() - применяйте лучше htmlspecialchars(). А то пользователи не смогут вставить в сообщения знаки < и >, что не есть гут - совсем.

Эта тема на forum.dklab.ru