Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вместо капчи проверка скрытого поля (https://javascript.ru/forum/misc/74476-vmesto-kapchi-proverka-skrytogo-polya.html)

nifty5 15.07.2018 18:14

Вместо капчи проверка скрытого поля
 
Я вообще ничего не понимаю в java script.
У меня просто есть сайт, где форма отправка сообщения работает на php, javascript, ajax.

всё работает. но спамеры достали. Раньше в прошлой версии сайта у меня просто были скрытые дополнительные поля в форме, которые человеку не видно, и прописано условие, что если это поле заполнено, то выдавать ошибку, не отправлять письмо. Расчет на то, что человек не видит эти поля и не будет заполнять, а если какие-то спамерские программы, то они заполнят.

но поскольку я вообще не знаю java script, просьба написать как именно изменить мне код:

1) в html странице, где форма контактов (добавить еще пару полей скрытых)
2) в javascript файле, где прописана обработка введенного текста.


в html у меня сейчас такой код:

Код:

<!-- FORM -->
        <form role="form" id="contact_form" class="contact-form" method="post" onSubmit="return false">
          <ul class="row">
            <li class="col-sm-12">
              <label>
                <input type="text" class="form-control" name="name" id="name" placeholder="Ваше Имя">
              </label>
            </li>
            <li class="col-sm-6">
              <label>
                <input type="text" class="form-control" name="email" id="email" placeholder="Ваш Email">
              </label>
            </li>
            <li class="col-sm-6">
              <label>
                <input type="text" class="form-control" name="company" id="company" placeholder="Ваш сайт (если есть)">
              </label>
            </li>
            <li class="col-sm-12">
              <label>
                <textarea class="form-control" name="message" id="message" rows="5" placeholder="Текст сообщения"></textarea>
              </label>
            </li>
            <li class="col-sm-12">
              <button type="submit"  value="submit" id="btn_submit" onClick="proceed();">ОТПРАВИТЬ</button>
            </li>
          </ul>
        </form>


а в javascript сейчас такой:

Код:

function checkmail(input){
  var pattern1=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
          if(pattern1.test(input)){ return true; }else{ return false; }}   
    function proceed(){
            var name = document.getElementById("name");
                var email = document.getElementById("email");
                var company = document.getElementById("company");
                var msg = document.getElementById("message");
                var errors = "";
                if(name.value == ""){
                name.className = 'error';
                    return false;}   
                  else if(email.value == ""){
                  email.className = 'error';
                  return false;}
                    else if(checkmail(email.value)==false){
                        alert('Вы ввели неправильный email адрес.');
                       
                        return false;}
                  else if(msg.value == ""){
                        msg.className = 'error';
                        return false;}
                  else
                  {
        $.ajax({
                type: "POST",
                url: "php/submit.php",
                data: $("#contact_form").serialize(),
                success: function(msg){
                //alert(msg);
                if(msg){
                        $('#contact_form').fadeOut(1000);
                        $('#contact_message').fadeIn(1000);
                                document.getElementById("contact_message");
                        return true;
                }}
        });
}};


напишите пожалуйста также 2 кода готовых уже (чтобы ничего не исправлять мне, а то ошибок наделаю) с добавочными скрытыми полями и проверкой их. Чтобы если невидимые поля формы чем-то заполнили, то письмо чтобы не отправлялось в этом случае

laimas 15.07.2018 18:47

Цитата:

Сообщение от nifty5
с добавочными скрытыми полями и проверкой их

Во-первых, эту проверку должен делать сервер, а не клиент. Во-вторых, стоит один раз посмотреть исходный код, а потом спокойно обходить эту защиту.

nifty5 15.07.2018 18:54

ну у меня было так раньше. в 90% помогает

laimas 15.07.2018 19:02

Цитата:

Сообщение от nifty5
ну у меня было так раньше. в 90% помогает

Это вы просто никому не нужны были по серьезному, а если возьмутся, то считай пропало. ;)

nifty5 15.07.2018 19:07

ну так я и сейчас никому особо не нужен ) просто меня тот прошлый вариант в принципе устраивал как простое эффективное для меня решение. всё остальное просто сложнее

laimas 15.07.2018 19:15

Цитата:

Сообщение от nifty5
как простое эффективное для меня решение

Не может быть решение эффективным, если речь идет о разрешениях, а дает их клиент.

рони 15.07.2018 19:26

nifty5,
var sp = [].some.call(document.querySelectorAll('[type="hidden"]'), function(node) {
            return node.value
        });
        if (sp) return;

function proceed(){ 
//сюда код показанный выше 
var name = document.getElementById("name");

nifty5 15.07.2018 19:28

рони,
а можно прямо в общем коде, как я просил?

рони 15.07.2018 19:43

Цитата:

Сообщение от nifty5
а можно прямо в общем коде, как я просил?

не понимаю

nifty5 15.07.2018 19:45

рони,
готовый код полностью с учетом изменений (в мой код вставить тот, что выше я написал).

я просто ничего в этом не понимаю. где-то не туда вставлю изменения, какую-нибудь скобку не закрою и ничего работать не будет.


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