пишу функцию для обработки входящих данных из формы, собственно код:
Свернутый текст
<?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 теги, а это лучше чем их экранировать
и почему же костыль? эта функция вполне устраивает моим требованиям, т.к. исключает html теги, а это лучше чем их экранировать
Спустя 36 минут, 40 секунд (23.04.2012 - 06:53) Игорь_Vasinsky написал(а):
всё зависит от цели.
если задача не пустить теги - то strip_tags()
если ты пропускаешь теги - то пишешь так, но при выводе htmlspecialchars()
почему кастыль? у меня такой же вопрос.
если задача не пустить теги - то strip_tags()
если ты пропускаешь теги - то пишешь так, но при выводе htmlspecialchars()
почему кастыль? у меня такой же вопрос.
Спустя 1 час, 55 минут, 19 секунд (23.04.2012 - 08:49) inc1uder написал(а):
Игорь_Vasinsky, спасибо
Задачей является отправка результата заполнения анкеты на почту, а по скольку отправляется он (результат) в html формате, мне не желательны html теги, банально h1 с фонт колором ред, в тексте комментария, или же img src, ну и конечно конечный пользователь, который увидит html-теги и ничего не поймет)
Задачей является отправка результата заполнения анкеты на почту, а по скольку отправляется он (результат) в html формате, мне не желательны html теги, банально h1 с фонт колором ред, в тексте комментария, или же img src, ну и конечно конечный пользователь, который увидит html-теги и ничего не поймет)