проверка textarea

RRR

Новичок
проверка textarea

хватает такого набора, или мало, или криво?
function adapt($txt){
$txt=trim($txt);
$txt=strip_tags($txt);
$txt=htmlspecialchars($txt);
$txt=preg_replace("/\n/","<br>\n",$txt);
return ($txt);
}
 

Demiurg

Guest
надо только htmlspecialchars и проверку на magic qoutes.
nl2br при выводе вместо preg_replace.
 

RomikChef

Guest
RRR, я бы тебе порекомендовал проверять не только текстарии, но и любые данные.
причем проверка зависит от того, как ты хранишь.
Для базы данных надо экранировать спецсимволы, а для текстовых файлов - наоборот. Для файла надо заменять переводы строк на БР, а для базы - нет.

Вот тебе пример для хранения в текстовом файле построчно.
Сразу, в одном цикле, перебираются все пришедшие переменные - очень удобно.
PHP:
foreach($_POST as $key => $value) { 
    $value=trim($value); 
    if (get_magic_quotes_gpc()) $value = stripslashes($value); 
    $value=htmlspecialchars($value,ENT_QUOTES); 
    $_POST[$key]=$value; 
    $value=str_replace("\r","",$value); 
    $value=str_replace("\n","<br>",$value); 
    $$key=$value; 
  }
Замечания к твоему коду
- не нужно использовать регулярные выражения (preg_replace) там, где можно без них обойтись.
- если ты используешь htmlspecialchars, то можно обойтись без strip_tags
- htmlspecialchars надо использовать с параметром ENT_QUOTES

почему в поем примере значение сначала присваивается элементу $_POST, а потом самой переменной - для того, чтобы можно было при ошибке вывести в форму ровно то, что человек вводил.
 

RRR

Новичок
уфф, как бурно, спасибо, вечером буду разбираться "cо словарем".
по поводу вопроса - в конкретном случае всю неделю ковыряю форму резервации через мыло, без каких либо баз;
а табуляцию сохранить нужно, по контексту чел может напр. в столбик записать свои просьбы итп.
 

RomikChef

Guest
RRR, короче, ты понял, я надеюсь, ценность этого советчика.
Если будут еще вопросы - обращайся, поможем.

Про трим - забудь, все ты делаешь правильно. Человек, который написал про табуляцию - очень серьезно болен.

Если ты собираешься отправлять сообщения емейлом, то зачем заменяешь переводы строк на <br>? Проще же отправлять простое текстовое письмо
 

RRR

Новичок
спосибо, особенно Ромику :)
про <br> - вывел вместо формы "Отправлено то-то..."
 

RomikChef

Guest
Вот об этом тут и говорили как раз.
На страницу лучше выводить функцией nl2br()
PHP:
echo "Отправлено :<br>".nl2br($text);
при этом сам текст не порится, а на страницу вводится с переводами строк
 

RomikChef

Guest
Воланд, специально для тебя, и для тех, кто считает, что в твою тупую башку можно что-то втолковать, весь твой бред вынесен в отдельную тему. Вот туда и изливайся. а сюда не пиши.
 

RomikChef

Guest
Да, если ты отсылаешь по почте, в текстовом виде, то htmlspecialchars делать не нужно - это только испортит текст.

то есть, твой код должен выглядеть так
function adapt($txt){
$txt=if (get_magic_quotes_gpc()) $txt = stripslashes($value);
$txt=trim($txt);
$txt=strip_tags($txt);
return ($txt);
}
И это отправлять письмом.
А чтобы вывести на экран, надо дополнительно сделать
$txt=nl2br(htmlspecialchars($txt,ENT_QUOTES));
 
Сверху