[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление спецсимволов HTML
inc1uder
И снова, здравствуте..

пишу функцию для обработки входящих данных из формы, собственно код:

Свернутый текст

<?php
function
secur($company,$email,$phone,$comment,$placement){
$comment = htmlspecialchars(stripslashes($_POST['comment']));
if (!empty($company) && !empty($email) && !empty($placement) && !empty($phone)){
if (!preg_match("/^[0-9]{10,10}+$/", $phone)){echo ('invalid phone <br />');};
if (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/",$company)){echo 'invalid company name <br />';};
if (filter_var($email,FILTER_VALIDATE_EMAIL)==false){echo 'invalid email <br />' .$b;};
return;
}
else{echo 'Заполните все поля';
return;
};
};


$to = 'ololo@olo.lo;
$subject = '
Заявка с сайта';
$headers = "Content-type: text/html; charset=windows-1251\r\n";
$headers .= "From: LexLine <robot@robot.ro>\r\n";
$headers .= "Reply-To: robot@ro.ro\r\n";
$company = $_POST['
name'];
$placement = $_POST['
placement'];
$email = $_POST['
email'];
$phone = $_POST['
phone'];
$col_spec = $_POST['
col_spec'];
$po = $_POST['
po'];
$comment = $_POST['
comment'];
secur($company,$email,$phone,$comment,$placement);
$message ='
<h1>Заказ</h1>';
$message .='
<table name="result" cellpadding=10 cellcpacing=10 border=1';
//спасибо killer8080
$message .='
<tr><td>Название компании или ИП</td><td>'.$company.'</td></tr>';
$message .='
<tr><td>В каком регионе Вы находитесь?</td><td>'.$placement.'</td></tr>';
$message .='
<tr><td>Контактный телефон</td><td>'.$phone.'</td></tr>';
$message .='
<tr><td>Контактный email</td><td>'.$email.'</td></tr>';
$message .='
<tr><td>Наличие специалистов </td><td>'.$col_spec.'</td></tr>';
$message .='
<tr><td>Нужен ли кредит на компенсационный фонд</td><td>'.$po.'</td></tr>';
$message .='
<tr><td>Комментарий</td><td>'.$comment.'</td></tr>';
$message .=
'
<tr><td>Строительство</td><td>'.
(!empty($_POST['
d'][1]) && is_array($_POST['d'][1]) ? implode('<br />', $_POST['d'][1]) : 'Не требуется').
'
</td></tr>'.
'
<tr><td>Проектирование</td><td>'.
(!empty($_POST['
d'][2]) && is_array($_POST['d'][2]) ? implode('<br />', $_POST['d'][2]) : 'Не требуется').
'
</td></tr>'.
'
<tr><td>Изыскание</td><td>'.
(!empty($_POST['
d'][3]) && is_array($_POST['d'][3]) ? implode('<br />', $_POST['d'][3]) : 'Не требуется').
'
</td></tr>'.
'
<tr><td>Энергоаудит</td><td>'.
(!empty($_POST['
d'][4]) && is_array($_POST['d'][4]) ? implode('<br />', $_POST['d'][4]) : 'Не требуется').
'
</td></tr>'.
'
</table>';
$message .='
</table>';

echo $message;
//mail($to, $subject, $message, $headers);
?>



проблема: $comment = htmlspecialchars(stripslashes($_POST['comment'])); теги все-таки проходят.. (например если пишу <h1>asd</h1>)

есть какие-нибудь предположения?



Спустя 2 минуты, 31 секунда (20.04.2012 - 13:37) Guest написал(а):
почитай описание функий которые используешь и вопросы сами пропадут
Никто не говорит, что спешиал чарс УДАЛЯЕТ символы. Более того - никогда даже не удалял

Спустя 6 минут, 4 секунды (20.04.2012 - 13:43) johniek_comp написал(а):
удалять символы на входе смысла нет, пусть лежат в базе они безопасны, при выводе хватит htmlspecialchars, мало ли что пользователь хотел ввести а ты взял и обрезал символы...

Спустя 19 минут, 9 секунд (20.04.2012 - 14:02) inc1uder написал(а):
все, спасибо, разобрался) решил проблему strip_tags'ом

Спустя 4 минуты, 38 секунд (20.04.2012 - 14:06) Guest написал(а):
это не решение, а кастыль

Спустя 2 дня, 16 часов, 7 минут, 29 секунд (23.04.2012 - 06:14) inc1uder написал(а):
есть другие варианты?

Спустя 2 минуты, 50 секунд (23.04.2012 - 06:17) inc1uder написал(а):
прошу прощения, неправильно выразился в названии темы.

и почему же костыль? эта функция вполне устраивает моим требованиям, т.к. исключает html теги, а это лучше чем их экранировать

Спустя 36 минут, 40 секунд (23.04.2012 - 06:53) Игорь_Vasinsky написал(а):
всё зависит от цели.

если задача не пустить теги - то strip_tags()
если ты пропускаешь теги - то пишешь так, но при выводе htmlspecialchars()

почему кастыль? у меня такой же вопрос.

Спустя 1 час, 55 минут, 19 секунд (23.04.2012 - 08:49) inc1uder написал(а):
Игорь_Vasinsky, спасибо

Задачей является отправка результата заполнения анкеты на почту, а по скольку отправляется он (результат) в html формате, мне не желательны html теги, банально h1 с фонт колором ред, в тексте комментария, или же img src, ну и конечно конечный пользователь, который увидит html-теги и ничего не поймет)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.