За последние 24 часа нас посетили 18346 программистов и 1605 роботов. Сейчас ищут 910 программистов ...

Как происходит проверка?

Тема в разделе "Прочие вопросы по PHP", создана пользователем urits, 27 окт 2013.

  1. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    Всем привет. Не могу понять, как на этом http://dakupi.ru сайте в разделе заказать обратный звонок, происходит проверка за заполнение полей? Кто может подсказать?
     
  2. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    никак я в номер телефона вбил чтото типа такого 939о34 меня пропустило
    а вот о чем ты .. понял вот функция js
    Код (Text):
    1.  
    2. function callback_send(){
    3. var data = $("#callback-form").serialize();
    4.     $.ajax({
    5.         url: "/callback",
    6.         type: 'post',
    7.         beforeSend: function(){
    8.         },
    9.         success: function(data){
    10.                 if(data.error){
    11.                     alert(data.error);
    12.                 } else{
    13.                     $("#callback-form").html(
    14.                         '<p id="callback-title" style="margin:60px 0 0 10px">Спасибо!<br/>Мы свяжемся с вами<br/>в ближайшее время!</p>'
    15.                     );
    16.                     yaCounter10672864.reachGoal('CALLBACK');
    17.                 }
    18.             },
    19.         error: function(data){
    20.         },
    21.         complete: function(){
    22.         },
    23.         data: data
    24.     });
    а теперь вот что происходит когда я тыкаю с неполными данными ( firebug rules)

    POST http://dakupi.ru/callback

    {"error":"Пожалуйста, укажите Ваш номер телефона"}

    Добавлено спустя 58 секунд:
    все проверки на стороне сервера (( ужас .. я с помощью валидации и маски ввода прям на форме отрабатываю

    Добавлено спустя 59 секунд:
    на полистай маска ввода мне больше всего нравится
    viewtopic.php?f=27&t=46089
     
  3. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    Я сам использую Masked Input Plugin, хорошая вещь.. Меня интересует как в случае как на том сайте сделать просто проверку с помощью js на простое заполнение форм? Тоесть как туда прикрутить
    Код (Text):
    1. function callback(){
    2.     var f=document.forms['callback-form'];
    3.     if(!f.name.value || f.name.value=='') alert('Введите ваше имя!');
    4.     else if(!f.phone.value || f.phone.value=='') alert('Введите номер телефона!');
    5.     else if(!f.city.value || f.city.value=='') alert('Введите свой город!!');
    6.     else f.submit();
    7. }
     
  4. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    форму дай =)
     
  5. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    дык как там она) я взял себе тот плагин оттуда
     
  6. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    аа =)
    ну тогда вот так тут
    Код (Text):
    1.  
    2. <form action="/callback" method="post" id="callback-form">
    3. <input type="image" class="button" src="/img/callback_button.jpg" onClick="callback_send();return false;"/>
    4. </form>
    Добавлено спустя 1 минуту 7 секунд:
    вот это ты ищешь
    onClick="callback_send();return false;"
     
  7. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    а как мою проверку туда прикрутить?

    Код (Text):
    1. function callback(){
    2.    var f=document.forms['callback-form'];
    3.    if(!f.name.value || f.name.value=='') alert('Введите ваше имя!');
    4.     else if(!f.phone.value || f.phone.value=='') alert('Введите номер телефона!');
    5.     else if(!f.city.value || f.city.value=='') alert('Введите свой город!!');
    6.    else f.submit();
    7. }
     
  8. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    а разве не так ?
    <input type="image" class="button" src="/img/callback_button.jpg" onClick="callback();return false;"/>
     
  9. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    пробовал, после нажатия кнопки "заказать" просто закрывается окно.. Это обращение к функции которую ты во втором посте писал..
     
  10. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    воткнул это в html - у меня требует имя пользователя =)
    Код (Text):
    1.  
    2. <form action="/callback" method="post" name="callback-form" id="callback-form">
    3.  <input type="text" name="name">
    4. <input type="image" class="button" src="/img/callback_button.jpg" onClick="callback();"/>
    5. </form>
    6.  <script type="text/javascript" charset="utf-8">
    7.  function callback(){
    8.     alert ("rere");
    9.    var f=document.forms['callback-form'];
    10.    if(!f.name.value || f.name.value=='') alert('Введите ваше имя!');
    11.     else if(!f.phone.value || f.phone.value=='') alert('Введите номер телефона!');
    12.     else if(!f.city.value || f.city.value=='') alert('Введите свой город!!');
    13.    else f.submit();
    14. }
    15. </script>
     
  11. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    у меня нет.. Там ведь нужно чтобы была обязательно связь с функцией callback_send()
     
  12. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    там это там,а у нас это тут =) создай пустую html и вставь туда весь текст который дал =) просто на своем компе ..
     
  13. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    но ведь мне нужно у себя сделать как у них.. )
     
  14. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    ну так сделай как у них только как у себя что мешает то - я не пойму в чем сейчас затык.
     
  15. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    проверку на заполнение форм чтобы была с помощью js, а не на сервере..
     
  16. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    форумчане меня конечно поругают- но мне просто лениво собирать из 2 одно -)
    Код (Text):
    1. function callback_send(){
    2.    var f=document.forms['callback-form'];
    3.    if(!f.name.value || f.name.value=='') alert('Введите ваше имя!');
    4.     else if(!f.phone.value || f.phone.value=='') alert('Введите номер телефона!');
    5.     else if(!f.city.value || f.city.value=='') alert('Введите свой город!!');
    6.    else {
    7. var data = $("#callback-form").serialize();
    8.    $.ajax({
    9.       url: "/callback",
    10.       type: 'post',
    11.         beforeSend: function(){
    12.       },
    13.          success: function(data){
    14.             if(data.error){
    15.                alert(data.error);
    16.             } else{
    17.                $("#callback-form").html(
    18.                   '<p id="callback-title" style="margin:60px 0 0 10px">Спасибо!<br/>Мы свяжемся с вами<br/>в ближайшее время!</p>'
    19.                );
    20.                yaCounter10672864.reachGoal('CALLBACK');
    21.             }
    22.             },
    23.          error: function(data){
    24.          },
    25.          complete: function(){
    26.       },
    27.          data: data
    28.    });
    29. }
     
  17. urits

    urits Новичок

    С нами с:
    24 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    Спасибо:) то, что нужно :)
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ок, JS отключен, а браузер не поддерживает атрибут pattern, либо я открыл твою форму и выпилил паттерн руками. Что помешает мне в таком случае заслать тебе мусор, который, к тому же, может быть потенциально опасным?
     
  19. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    я не про то - я про то что каждый раз даже при включенном js дрючится сервер
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    ну прям дрючится, скажешь тоже. Какой сервер должен быть, чтобы проверка пачки входящих данных его дрючила?:)

    Нагрузка на запись всегда в разы меньше нагрузки чтения, а проверка входящих данных - это то, ради чего стоит потратить пару-тройку тактов шестиядерного ксенона.

    Твоя "фильтрация" основана на том, что пользователь хороший и пушистый. Только вот если на тысячу хороших людей найдется один мудак - тебе хватит и этого, чтобы потом ведрами гумно вычерпывать. Смекаешь? Юзер, как ни парадоксально, твой враг. Интернет - поле боя. Это крайне агрессивная среда. Никогда не верь тому, что пришло от юзера. Все можно подделать, все можно обойти. Верь только тому, что скажет о пришедших данных твой сервер.
     
  21. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    +1
    вроде для всех это должно быть очевидно, а нет - у "детей жиквери" мозги набекрень.
     
  22. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Вообще можно данные проверять и на стороне клиента и на стороне сервера
     
  23. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Вобще-то речь о том, что проверять на стороне сервера обязательно. Остальное - для красоты.

    Валидация на сервере через AJAX не редкость. https://www.google.ru/search?q=ajax+server+side+validation
    Помоему заманчиво писать правила валидации только один раз, а использовать на обоих концах.
     
  24. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Что не редкость - знаю. Постоянно работаю с Open Cart, там и корзина, и оформление заказа - всё AJAX.
     
  25. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Просто надо понимать, что для чего служит. Валидация на стороне клиента, юзание js ли, pattern ли служит всего двум целям:
    1) Чтобы подсказывать пользователю, если он где-то ошибся;
    2) Чтобы предотвратить нежелательные "холостые" запросы к серверу, которые априори не имеют смысла;

    Если запрос все же случился, то тут, к примеру, сценарии такие:
    1) Все данные валидные и пришли от добросоветсного пользователя;
    2) Данные левые и пришли от того, кто умеет обходить валидацию;
    3) Данные левые и пришли с другого сервера через курлу;
    4) Данные левые и пришли из никсовой консоли какого-то хитрого кулхацкера;

    И как угадать? 3 к 1, что данные могут придти левые.
    Такой вариант вы тоже рассматривали, Slavka?