02.04.2015, 18:10
|
|
Аспирант
|
|
Регистрация: 30.09.2014
Сообщений: 32
|
|
Кавычкий в регулярках
Всё, я сдаюсь. Пишу вопрос. Такое дело. Я раньше на php много с регулярками работал, теперь вот в JS вникаю, и снова нужны регулярки, в частности проверить введённые в форму данные. Дошёл до поля с текстом для письма. Всё работает офигенно, кроме него. В нём я хотел исключить одинарные, двойные кавычки и обе наклонные с амперсандом. Уже дошёл до
if (!(/\"+/i.test(form.textm.value))){
Но ему всё пофигу. Игнорирует этот if и всё. Что не так? Сколько не искал информации - не нашёл. Спасибо!
С другими полями всё ок. Конкретно про кавычки и пр. вопрос.
Последний раз редактировалось usesa, 02.04.2015 в 18:20.
|
|
02.04.2015, 18:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
usesa,
var reg = /[\/"'\\]/;
alert([reg.test(' " '), reg.test(' \\ '), reg.test(' / '), reg.test(" ' "), reg.test(' test ')])
|
|
02.04.2015, 18:56
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
if(!/["'\\\/]/.test(form.textm.value)) {
alert('Всё ок');
}
|
|
02.04.2015, 19:41
|
|
Аспирант
|
|
Регистрация: 30.09.2014
Сообщений: 32
|
|
И так пропускает. Может это из-за бутстрапа? Скину сразу код, чтоб люди меня поправляли, ибо не волшебник, только учусь
<div class="row content">
<div class="col-md-8 col-lg-8 col-xs-12">
<form class="form-horizontal horform" onsubmit="return checkForm(this)">
<div class="input-group">
<div class="input-group-addon"><span class="glyphicon glyphicon-user" aria-hidden="true"></span> </div>
<input type="fio" class="form-control" id="fio" placeholder="Ваше имя">
</div>
<div class="input-group">
<div class="input-group-addon"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> </div>
<input type="phone" class="form-control" id="phone" placeholder="Любой ваш контакт">
</div>
<div class="alert alert-info" id='succes' style="margin-top: 20px;display: none;"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Спасибо за доверие! Мы с вами обязательно свяжемся!</div>
<div class="alert alert-danger" id='err_email' style="margin-top: 20px;display: none;"></div>
<textarea class="form-control" rows="10" maxlength="2000" id="textm" placeholder="Сюда введите текст вашего сообщения. Мы вам обязательно ответим!"></textarea>
<button type="submit" class="btn btn-warning btn-primary" style="float: right;"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> </button>
</form>
<script type="text/javascript">
function checkForm(form){
if ((document.getElementById('fio').value=="")
||(document.getElementById('phone').value=="")
||(document.getElementById('textm').value=="")) {
document.getElementById('err_email').style.display='block';
document.getElementById('err_email').innerHTML='Вы что-то забыли заполнить!';
return false;
}
if (/[\\\/\"\'\>\<\$\}\{]+/i.test(form.phone.value)){
document.getElementById('err_email').style.display='block';
document.getElementById('err_email').innerHTML='Вы что-то намудрили в контактах! (например, нельзя кавычки)';
return false;
}
if (!(/^[а-яА-ЯёЁA-Za-z0-9-]{2,15} ?([а-яА-ЯёЁA-Za-z0-9-]{2,15})?$/i.test(form.fio.value))){
document.getElementById('err_email').style.display='block';
document.getElementById('err_email').innerHTML='Лишние символы в контактах!';
return false;
}
if(!/["'\\\/]/.test(form.textm.value)){
document.getElementById('err_email').style.display='block';
document.getElementById('err_email').innerHTML='Пожалуйста, не используйте спецсимволы в сообщении!';
alert('Всё ок');
return false;
}
if ((document.getElementById('fio').value.length < 2 )
||(document.getElementById('phone').value.length < 8 )
||(document.getElementById('phone').value.length > 150 )
||(document.getElementById('fio').value.length > 31 )){
document.getElementById('err_email').style.display='block';
document.getElementById('err_email').innerHTML='Ваше Величество! Представьтесь нормально. Нам же вам перезванивать...';
return false;
}
var req;
if (window.XMLHttpRequest) // normal browser
req = new XMLHttpRequest();
else if (window.ActiveXObject) { //IE
try {
req = new ActiveXObject('Msxml2.XMLHTTP'); // IE разных версий
} catch (e){} // может создавать
try { // объект по разному
req = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){}
}
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
document.getElementById('succes').style.display='block';
document.getElementById('err_email').style.display='none';
}
};
req.open("POST", 'mailz.php', true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send('fio='+document.getElementById('fio').value+'&phone='+document.getElementById('phone').value+'&textm='+document.getElementById('textm').value);
}
else alert("Браузер не поддерживает AJAX");
return false;
}
</script>
<em>Мы никогда не разглашаем данные наших клиентов!</em>
</div>
</div>
</div>
Последний раз редактировалось usesa, 02.04.2015 в 19:44.
|
|
03.04.2015, 09:45
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
А ты учитываешь, что любые проверки на стороне клиента обходятся элементарно?
|
|
03.04.2015, 13:18
|
|
Аспирант
|
|
Регистрация: 30.09.2014
Сообщений: 32
|
|
Сообщение от Erolast
|
А ты учитываешь, что любые проверки на стороне клиента обходятся элементарно?
|
Ну почему так скупо-то? Я ведь не понимаю, и это видно. Расписали бы шире. Огромное спасибо!
|
|
03.04.2015, 16:38
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Что тут непонятного? Весь этот твой код отправляется на мою машину и исполняется у меня, чо хочу с ним - то и делаю. Захочу - переопределю функцию checkForm на свою без всяких проверок. Захочу - вообще не буду открывать браузер и отправлю запрос через curl.
Код:
|
curl --data-urlencode "\
fio=Satan\
&phone=0666-666-666\
&textm=I WANNA SEE YOUR PASSWORDS'%sql-инъекция%\
" \
http://yoursite.com/mailz.php |
Последний раз редактировалось Erolast, 03.04.2015 в 16:50.
|
|
03.04.2015, 16:42
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Да, кстати, какого отправка формы делает в функции с названием checkForm?
|
|
03.04.2015, 17:11
|
|
Аспирант
|
|
Регистрация: 30.09.2014
Сообщений: 32
|
|
Смысл ясен, спасибо! Но обработка формы ведь происходит в php. Объясните мне пожалуйста, что читать, куда смотреть, и как всё правильно сделать. Спасибо! Если у вас есть возможность и желание, я был бы рад пообсуждать такие темы в icq 653один89
Последний раз редактировалось usesa, 03.04.2015 в 17:19.
|
|
03.04.2015, 17:13
|
Кандидат Javascript-наук
|
|
Регистрация: 31.03.2015
Сообщений: 113
|
|
re=/['"]/
if(!re.test("foo'bar")) alert("foo")
if(!re.test('foo"bar')) alert("bar")
if(!re.test('foobar')) alert("baz")
// baz
|
|
|
|