1. PHP / Говнокод #6517

    +164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if($password===$_POST['password'] && $login===$_POST['login'])
    	{	
    // устанавливаем login & pass	
    	$_SESSION['login']=$_POST['login'];	
    	
    	$_SESSION['password']=$_POST['password'];
    // Перенаправляем в админ панель	
    	Header("Location: config.php");	
    	}
    else { ... }

    Запостил: NemoReturns, 29 Апреля 2011

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

    • да... про авторизации уже саги можно писать
      Ответить
    • забавно )))
      Ответить
    • А где смеяться?
      Дырок нет, нормальный код начинающего.

      Ну если только админ-панель в конфиге.
      Ответить
      • а меня улыбает:
        1. сравнение, причем даже строгое - то есть, логин и пасс мы знаем заранее ))
        2. загоняем в сессию внешние данные
        3. относительное перенаправление, и без убиения
        Ответить
        • 1. Возможно, это гостевая книга, где по идее учетных записей нет вовсе.
          2. Но ведь только при условии, что они корректны.
          3. Без убиения чего? И все браузеры уже несколько лет без проблем перенаправляют по относительным ссылкам.
          Ответить
          • 1. ужас
            2. сомнительно
            3. die(); очень желателен. И редирект желателен по абсолютным адресам
            Ответить
            • 1. Ладно, теперь я буду заводить таблицу с одним юзером для гостевой книги.
              2. >if($password===$_POST['password'] && $login===$_POST['login'])
              Где здесь сомнительно-то?
              3. А, да, тут я согласен. die() должен быть.
              Ответить
              • 1. да. тогда юзвери смогут даже регистрироваться
                2. при изменениях этого может не быть. уж лучше пользоваться $login $password
                3. в принципе, может, скрипт ничего не делает существенного дальше, но лучше перестраховаться.
                Ответить
                • Зачем им регистрироваться?
                  Ответить
                  • а зачем тут регистрироваться?
                    Ответить
                    • Чтоб капчи не вводить.
                      Ответить
                      • какие кепчи? я их никогда не вводил
                        простейший распознаватель поставь
                        Ответить
                        • Зачем распознаватель? Я лучше зарегистрируюсь и всё.
                          Ответить
                          • дык зарегестрировавшемуся нужно вводить кепчи
                            Ответить
                            • Нет, гостю нужно, зарегистрировавшемуся не нужно.
                              Ответить
                              • не рассказывай сказки, ты вводишь все кепчи, если постишь посты чаще чем 2 мин с последнего поста
                                Ответить
                                • Видимо, я не такой флудер, поэтому не знал об этом.
                                  Ответить
                                • Дык её же сломали, эту капчу. Она показывается, но зареганные если не вводят, то постится всё равно.
                                  Ответить
                        • "Отцы и дети", И.С. Тургенев
                          Ответить
                      • А я ввожу.
                        Говнокод мне не доверяет?
                        Ответить
                        • когда неймфаги вводят кепчи, а аноны нет - не имеет смысла регаться, не находите?
                          Ответить
                          • Имеет, я ведь буду нет_аватаром, а вы - черной фигней, похожей на чайник.
                            Ответить
          • это не гостевая, это интернет-магазин, в сессии обычно хранят id, логин, уровень доступа пользователя(простой/модератор/администратор), а тут в сессии лежит логин и пароль и каждый раз при обращении к странице происходит выборка из базы. Ладно не было меня тут 20 дней и ещё столько же не будет.
            Ответить
            • в сессии обычно хранят то, что нужно. т.е. в каждом конкретном случае разное, не угадаешь.
              Ответить
              • Ой, че в сессии люди только не хранят:) Даже конфиги проекта некоторые каждому юзеру в сессию вгоняют:). Ну а для авторизации конечно id, доступ и т.п.
                Ответить
    • показать все, что скрытоМишустин, чего вернулся?
      Немо хомячки би бэк?
      Ответить
    • показать все, что скрытоНасколько хорошо, если я сделаю передачу имя пользователя/пароля через GET?
      Ответить
      • А зачем так делать?
        Ответить
        • Мне интересно минусы и насколько это опасно?
          Ответить
          • Ну, подумаешь, логин и пароль в виде ссылки осядут в журнале браузера. Дело на публичном компьютере происходит? Ой, да ладно, хуйня какая.

            http://www.phpfaq.ru/safety
            Ответить
        • Ну и вообще так в каких-нибудь случаях кто-нибудь делает?
          Ответить
          • Вконтакте делает, помнится бота писал так там на login.php можно как постом так и гетом передать данные аккаунта.
            У них есть такая кросс-доменная авторизация с помощью ифрейма и куков, вот там видимо просто удобно гет-ом передать данные на логин, хотя конечно можно и постом, но в том случае не критично, т.к. сама форма авторизации посылает данные постом.
            Ответить
        • Есть самописный вебсервер, передачу через POST данных пока не поддерживает, кроме как бинарных. Вот и думаю, как сделать авторизацию. :-[
          Ответить
      • да, действительно, не стоит.
        предлагаю сделать стандартно:
        1. в сессии хранить обьект (или массив) с данными пользователя: логин(лучше в качестве логина использовать емайл), имя, роль или права доступа, плюс любая другая инфа. Пароль хранить в сессии не надо, а пусть будет в базе в виде хеша.
        2. при обращении к странице(ам) проверять, есть ли в сессии что-то и что есть.
        3. и только при нажатии кнопочки Вход брать данные логин-пароль из пута, выбирать по ним из базы юзера, если такой нашелся. Если нашелся, писать их в сессию, если нет - выдавать сообщение, что такого нет.
        4. если юзер залогинен, кнопочка Вход рендерится ка Выход, при нажатии на нее из сессии стирается инфа о юзере

        все.
        Ответить

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