Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Кавычкий в регулярках (https://javascript.ru/forum/misc/54836-kavychkijj-v-regulyarkakh.html)

usesa 02.04.2015 18:10

Кавычкий в регулярках
 
Всё, я сдаюсь. Пишу вопрос. Такое дело. Я раньше на php много с регулярками работал, теперь вот в JS вникаю, и снова нужны регулярки, в частности проверить введённые в форму данные. Дошёл до поля с текстом для письма. Всё работает офигенно, кроме него. В нём я хотел исключить одинарные, двойные кавычки и обе наклонные с амперсандом. Уже дошёл до
if (!(/\"+/i.test(form.textm.value))){

Но ему всё пофигу. Игнорирует этот if и всё. Что не так? Сколько не искал информации - не нашёл. Спасибо!

С другими полями всё ок. Конкретно про кавычки и пр. вопрос.

рони 02.04.2015 18:46

usesa,
:-?
var reg = /[\/"'\\]/;
  alert([reg.test(' " '), reg.test(' \\ '), reg.test(' / '), reg.test(" ' "), reg.test(' test ')])

ruslan_mart 02.04.2015 18:56

if(!/["'\\\/]/.test(form.textm.value)) {
    alert('Всё ок');
}

usesa 02.04.2015 19:41

И так пропускает. Может это из-за бутстрапа? Скину сразу код, чтоб люди меня поправляли, ибо не волшебник, только учусь
<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>&nbsp;</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>&nbsp;</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>&nbsp;Спасибо за доверие! Мы с вами обязательно свяжемся!</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>&nbsp;</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>

Erolast 03.04.2015 09:45

А ты учитываешь, что любые проверки на стороне клиента обходятся элементарно?

usesa 03.04.2015 13:18

Цитата:

Сообщение от Erolast (Сообщение 364769)
А ты учитываешь, что любые проверки на стороне клиента обходятся элементарно?

Ну почему так скупо-то? Я ведь не понимаю, и это видно. Расписали бы шире. Огромное спасибо!

Erolast 03.04.2015 16:38

Что тут непонятного? Весь этот твой код отправляется на мою машину и исполняется у меня, чо хочу с ним - то и делаю. Захочу - переопределю функцию 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:42

Да, кстати, какого отправка формы делает в функции с названием checkForm?

usesa 03.04.2015 17:11

Смысл ясен, спасибо! Но обработка формы ведь происходит в php. Объясните мне пожалуйста, что читать, куда смотреть, и как всё правильно сделать. Спасибо! Если у вас есть возможность и желание, я был бы рад пообсуждать такие темы в icq 653один89

theKingOfJava 03.04.2015 17:13

re=/['"]/
if(!re.test("foo'bar")) alert("foo")
if(!re.test('foo"bar')) alert("bar")
if(!re.test('foobar')) alert("baz")
//  baz


Часовой пояс GMT +3, время: 08:10.