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

    0

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    let users = [
      user_1 = {
        user_name: 'Первый',
        user_login: 'l1',
        user_password: 'p1'
      },
      user_2 = {
        user_name: 'Второй',
        user_login: 'l2',
        user_password: 'p2'
      },
      user_3 = {
        user_name: 'Третий',
        user_login: 'l3',
        user_password: 'p3'
      }
    ]
    
    function authorisation(guest_login, guest_password) {
      for (let key in users) {
        if(guest_login == users[key].user_login && guest_password == users[key].user_password) {
          return alert('Хай ' + users[key].user_name);
        } else {
          alert('Чёт не то'); continue;
        }
      }
    }
    
    authorisation(prompt('Введите логин'), prompt('введите пароль'))

    Вот казалось бы, ну чего тут сложного? А чёт сложно. Всего-то и нужно - пробегаться по массиву объектов, сверять логины и пароли и либо здороваться с пользователем, либо выдавать сообщение об ошибке. Находить пользователя у меня получается, проблема в том, что если он не первый по счёту, то сообщение об ошибке выпадает на каждого предыдущего. Ну и если крутить вертеть последовательность, то просто на каждого с кем данные не совпадают. Как бы мне этого избежать?

    Запостил: shuric, 18 Сентября 2021

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

    • Вынуть алерт из else и убрать ветку else вообще.
      Ответить
      • Я пытался! Но видимо что-то говняю в синтаксисе и просто ломаю бедное устройство -_-
        Ответить
      • ну или вот так, не ломается, но ничего и не даёт, проблема остаётся

        function authorisation(guest_login, guest_password) {
        for (let key in users) {
        if(guest_login == users[key].user_login && guest_password == users[key].user_password) {
        return alert('Хай ' + users[key].user_name);
        }
        alert('Чёт не то'); continue;
        }
        }

        authorisation(prompt('Введите логин'), prompt('введите пароль'))
        Ответить
        • Алерт нужно ниже ставить: после цикла, но перед последней фигурной скобкой.
          Ответить
          • Помогло, спасибо )))
            Ответить
            • В таких ситуациях лучше рисовать блок-схемы, чтобы понять, какой фрагмент кода за каким выполняется.

              Можно ещё трассировать программу в отладчике или в уме: выполнять по шагам, чтобы понять, какой шаг как изменяет переменные или к какому блоку вызывает переход.
              Ответить
              • Не, я примерно понимаю, саму логику событий, + всё пропускаю через отладчик в дев тулс. Но частенько путаюсь в правилах. Как и что и с чем можно/нельзя/не стоит ставить. Где нужно вернуть значение, где вывести инфу и тд. Так то я конечно логику событий прописываю себе. Не говорю, что правильно это делаю, но и бездумно стараюсь не фигачить )))
                Ответить
      • Спасибо!
        Ответить
    • > javascript
      > users[i].password == password

      Я искренне надеюсь, что это не с клиентской стороны...

      > prompt

      Надежда умерла.
      Ответить
      • А?
        Ответить
        • Ну как бы неприлично отдавать клиенту список всех юзеров с их паролями, чтобы он там потом искал свой...
          Ответить
          • я подсознательно понимал, что с точки зрения, кхм, безопасности, и уж тем более - адекватности, у меня получается не самый умный покемон, ну так, наши дети это копии нас самих XD
            Ответить
          • К слову:
            https://wiki.owasp.org/?title=Special:Redirect/file/OWASP%20Top%2010-2017-ru.pdf
            Ответить
            • О, это же те же петухи, которые советуют ставить все обновления
              Ответить
            • Почитаю, благодарственно!
              Ответить
      • https://i.imgur.com/gZiBHR9.png
        Ответить
    • Я больше никогда не буду пользоваться сайтами с jawasцript...
      Ответить
      • Ну ну, по одному говнокоду весьма неумного говнокодера судить о всём языке не стоит. Это же я дурачок, а не JS )))
        Ответить
        • Нет, это всё не твоя вина, а Jawasцriptа.
          Ответить
          • Единственное общее JavaScript с Jawa, которое я вижу:
            - В Jawa долбоёбы из принципа не хотят добавлять полезные фичи, поэтому люди изобретают ебучий Cotlin.
            - В JavaScript добавляют, но люди всё равно вынуждены использовать ебучие бабеля или тупоскрипты, чтобы на всех браузерах работало.
            Ответить
            • > Jawa
              > Cotlin

              Я ещё знаю языки программирования «SI» и «Paskal». По крайней мере, такие названия были на обложке диска с компиляторами, который я видел на радиорынке.
              Ответить
            • пиши под electron и будешь всегда знать версию хрома
              Ответить
          • Ы)
            Ответить
    • const p = prompt();
      if (p !==  "Aasd234123") {
        alert('Пароль неверен');
        return;
      }
      Ответить
      • const p = prompt('Введите пароль (Aasd234123)');
        if (p !==  'Aasd234123') {
          alert('Пароль Aasd234123 введён некорректно!');
          return;
        }
        Ответить
        • --Придумайте пароль
          --Abc123
          --Такой пароль уже используется аккаунтом ISO. Придумайте другой пароль
          Ответить
    • Поэтому я за PHP. В нём невозможно выдать список логинов и паролей клиенту.
      Ответить

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