1. JavaScript / Говнокод #16852

    +170

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    <form id ='activate'>
        <div class ='form-control'>
            <label>Введите код подтверждения из SMS</label>
            <input type ='text' name ='code' class ='form-control' />
        </div>
        <button class = 'btn btn-success'>Активировать</button>
    </form>
    <script>
        $(function () {
            $('#activate').submit(function () {
                if ($('#activate [name="code"]').val != '<?php echo $secretCode; ?>') {
                    alert('Вы ввели неверный код!')
                    return false;
                }
            })
        })
    </script>

    Бог безопасности

    Запостил: Snickers, 15 Октября 2014

    Комментарии (16) RSS

    • По секрету всему свету.
      Ответить
    • Ничего что условие заведомо ложное?
      Или в SMS jQuery рассылается?)))
      Ответить
      • Действительно, похоже на опечатку (.val вместо .val()).

        А вдруг это специальный сервис для хакеров, которые будут смотреть исходный код страницы, чтобы ввести код?
        Ответить
        • > А вдруг это специальный сервис для хакеров, которые будут смотреть исходный код страницы, чтобы ввести код?
          Я подумал примерно так же: "А вдруг авторы лохотрона решили подготовиться к тому, что кто-то усомнится и откроет исходный код, и вставили туда какую-то питушню".
          Ответить
      • поясните мысль
        Ответить
        • Нет свойства по имени val. Есть свойство value у DOM (но тогда нужно писать $('#селектор')[0].value) и метод val() у Жуквери ($('#селектор').val()).

          В данном же случае .val будет равно исходному коду метода val(), поэтому условие может быть истинным только в том случае, если <?php echo $secretCode; ?> равно чему-нибудь типа function(value){if(value===undefined){va r elem=this[0];if(elem){if(jQuery.nodeName(elem,"optio n")){return(elem.attributes.value||{}).s pecified?elem.value:elem.text;}
          if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type==="s elect-one";if(index<0){return null;}
          for(var i=one?index:0,max=one?index+1:options.le ngth;i<max;i++){var option=options[i];if(option.selected){value=jQuery(option ).val();if(one){return value;}
          values.push(value);}}
          return values;}
          if(rradiocheck.test(elem.type)&&!jQuery. support.checkOn){return elem.getAttribute("value")===null?"on":e lem.value;}
          return(elem.value||"").replace(rreturn," ");}
          return undefined;}
          var isFunction=jQuery.isFunction(value);retu rn this.each(function(i){var self=jQuery(this),val=value;if(this.node Type!==1){return;}
          if(isFunction){val=value.call(this,i,sel f.val());}
          if(typeof val==="number"){val+="";}
          if(jQuery.isArray(val)&&rradiocheck.test (this.type)){this.checked=jQuery.inArray (self.val(),val)>=0;}else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(val);jQuery("opt ion",this).each(function(){this.selected =jQuery.inArray(jQuery(this).val(),value s)>=0;});if(!values.length){this.selecte dIndex=-1;}}else{this.value=val;}});}
          Ответить
          • Спасибо. Т.е. код просто не работает как ожидалось. Видимо, никто ещё ни разу не купился на развод, не ввёл туда правильный код и не пожаловался на облом.
            Ответить
          • Стоп! Но тогда ведь плевать, что введено в поле. Результат сравнения зависит только от того, совпадает ли сгенерированный код подтверждения с исходным кодом метода jQuery.
            Ответить
            • Именно так. Но логично же предположить, что в смс приходит то же самое, что находится в $secretCode, значит надо рассылать jQuery :D
              Ответить
              • Тогда СМС будет размером в десять сегментов... Красиво!
                Ответить
                • Пользователь будет очень счастлив впечатывать весь этот код руками.
                  Сервис рассылки жуквери страждущим.
                  Ответить
                  • Ага, он же не знает, что от его ввода ничего не зависит :D
                    Зато с первого раза получится)))
                    Ответить
                    • Правда, в input же нельзя многосторочный текст ввести. Надо другой минификатор.
                      Ответить
      • если бы там всё работало, возможно это бы вскрылось намного позже релиза =)
        Ответить
    • .val - это функция, она не может быть равна числу, автор сам написал, сам посмеялся
      Ответить

    Добавить комментарий