Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2015, 18:10
Аватар для usesa
Аспирант
Отправить личное сообщение для usesa Посмотреть профиль Найти все сообщения от usesa
 
Регистрация: 30.09.2014
Сообщений: 32

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

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

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

Последний раз редактировалось usesa, 02.04.2015 в 18:20.
Ответить с цитированием
  #2 (permalink)  
Старый 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 ')])
Ответить с цитированием
  #3 (permalink)  
Старый 02.04.2015, 18:56
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

if(!/["'\\\/]/.test(form.textm.value)) {
    alert('Всё ок');
}
Ответить с цитированием
  #4 (permalink)  
Старый 02.04.2015, 19:41
Аватар для usesa
Аспирант
Отправить личное сообщение для usesa Посмотреть профиль Найти все сообщения от usesa
 
Регистрация: 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>&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>

Последний раз редактировалось usesa, 02.04.2015 в 19:44.
Ответить с цитированием
  #5 (permalink)  
Старый 03.04.2015, 09:45
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

А ты учитываешь, что любые проверки на стороне клиента обходятся элементарно?
Ответить с цитированием
  #6 (permalink)  
Старый 03.04.2015, 13:18
Аватар для usesa
Аспирант
Отправить личное сообщение для usesa Посмотреть профиль Найти все сообщения от usesa
 
Регистрация: 30.09.2014
Сообщений: 32

Сообщение от Erolast Посмотреть сообщение
А ты учитываешь, что любые проверки на стороне клиента обходятся элементарно?
Ну почему так скупо-то? Я ведь не понимаю, и это видно. Расписали бы шире. Огромное спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 03.04.2015, 16:38
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 03.04.2015, 16:42
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Да, кстати, какого отправка формы делает в функции с названием checkForm?
Ответить с цитированием
  #9 (permalink)  
Старый 03.04.2015, 17:11
Аватар для usesa
Аспирант
Отправить личное сообщение для usesa Посмотреть профиль Найти все сообщения от usesa
 
Регистрация: 30.09.2014
Сообщений: 32

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

Последний раз редактировалось usesa, 03.04.2015 в 17:19.
Ответить с цитированием
  #10 (permalink)  
Старый 03.04.2015, 17:13
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от theKingOfJava
 
Регистрация: 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
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кроссбраузерность в регулярках shkarbatov Javascript под браузер 12 29.07.2011 01:18