странности в обработке строк (nl2br())

je0n

Новичок
странности в обработке строк (nl2br())

есть форма с textarea, данные из textarea передаю методом POST скрипту на обработку. Для замены \r\n использую nl2br, но неправильно работает! у моей textarea имя description. Обрабатываю вот так:
PHP:
function CheckForSQLEnj($var)
{
	$var=mysql_escape_string($var);
	if(is_int($var))$var=intval($var);
	return $var;
}
if(isset($_POST['send']) && isset($_POST['description']) && $_POST['description']!="")
{
	$description=CheckForSQLEnj(nl2br($_POST['description']));
	echo $description;
}
так вот после echo $description выводит в браузер символы \r\n прямо в таком виде "\r\n".
Ну например я ввел в textarea:
а в бразуер мне вывело вот это:
Ведь не должно же так быть! что у меня не так?
если плохо объяснил, то я хочу получить в бразуер
 

Андрейка

Senior pomidor developer
je0n
а зачем ты нам тут $_POST приводишь.. ты прям текст с переносом строки подставляй вместо переменной

PHP:
if(is_int($var))$var=intval($var);
это для большей безопасности?
 

je0n

Новичок
Андрейка
if(is_int($var))$var=intval($var);
есть какой-то тип скуль-инъекций на целочисленные значения, я толком не знаю как они реализовываются, но знаю, что нужно проверять на целочисленные значения.

решил свою проблему так:
$description=CheckForSQLEnj(str_replace("\r\n","<br>",$_POST['description']));
$description=CheckForSQLEnj(str_replace("\n","<br>",$description));
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
je0n
Бред.
Данные нужно обрабатывать перед непосредственной записью в БД.
 

Фанат

oncle terrible
Команда форума
je0n
количество ошибок в твоих рассуждениях и познаниях даже посчитать трудно.

Но надо все исправлять.
Во-первых, с чего ты решил, что дело в nl2br()? проверь ещё раз - в ней ли дело.
Во-вторых, про "скуль-инъекции на целочисленные значения" тебе приснилось
В-третьих, форматировать текст лучше перед выводом, а не перед ложением в базу.

-~{}~ 25.09.07 22:18:

$description=CheckForSQLEnj(str_replace("\r\n","<br>",$_POST['description']));
$description=CheckForSQLEnj(str_replace("\n","<br>",$description));
что изменится, если оставить только одну вторую строчку?
 

SiMM

Новичок
Сдаётся мне, что функция CheckForSQLEnj вообще лишена смысла, ибо достаточно правильно составлять SQL-запросы.

-~{}~ 25.09.07 23:07:

Блин. Ну и нафига эту функцию было так называть? :)
 
Сверху