ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Авторизация пользователей в полном смысле этого слова.

Авторизация пользователей в полном смысле этого слова.

  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 30 августа 2010 г. 7:35, спустя 27 минут 3 секунды

    ну, в чате надо не так мониторить юзверя
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 30 августа 2010 г. 7:42, спустя 6 минут 25 секунд

    протокол http не поддерживает постоянное соединение и не имеет состояния. поэтому сессия — это то, что вы сами придумаете и реализуете. если вы говорите про поддержку пользовательских сессий в php, гляньте всю группу функций session_*. это вариант. на самом деле т.к. сессии реализуются посредством кук, достаточно поставить время жизни куки в 0 и "крестик" убъет сессию.
    ιιlllιlllι унц-унц
  • Lopar

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 30 августа 2010 г. 7:40, спустя 23 часа 58 минут 56 секунд

    то есть таки только таймаут?

    а способов отследить, что человек закрывает окно\вкладку в наличии есть?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 30 августа 2010 г. 7:44, спустя 3 минуты 48 секунд

    в самом протоколе способа нет. можно через js стучаться с заданным интервалом типа "я еще здесь", а на сервере слушать и делать выводы.
    Спустя 33 сек.
    только помоему это чушь собачья. надуманные проблемы
    ιιlllιlllι унц-унц
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 30 августа 2010 г. 7:56, спустя 11 минут 21 секунду

    надуманные проблемы

    Я почему его и спрашиваю.
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 30 августа 2010 г. 8:09, спустя 13 минут 20 секунд

    Будем считать у нас есть таблица (или мемкеш или хуйнанэ) с парами {юзернейм, время_последней_активности}. Когда нам надо вывести "список онлайн" мы сравниваем текущее время с этими значениями и старых убираем. Никакого крона, никакого js, простое волшебство.

    Теперь вопрос: а если прошло сто пятьсот часов и никто не проявлял активнсти, неужели наша таблица так и будет нечищенной.
    Ответ: да и хуй на неё! Она нужна только когда хоть кто-нибудь проявил активность, иначе кому мы будем показывать наш "список онлайн".
    ιιlllιlllι унц-унц
  • has

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 3 октября 2010 г. 1:51, спустя 33 дня 17 часов 42 минуты

    Добрый день.
    Есть вопрос такой.
    В примере есть скрипт демонтсрации закрытой части в файле closed.php :
    <?php

    session_start();

    if (isset($_SESSION['user_id']))
    {
    // показываем защищенные от гостей данные.

    print '<h1>Здрасте!</h1>
    <p>Это закрытая страница.</p>
    <p><a href="index.php">Перейти на главную</a></p>';
    }
    else
    {
    die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>');
    }


    ?>


    А не нужно проверять в кукках записаны логин/пароль или нет?
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 3 октября 2010 г. 1:52, спустя 35 секунд

    зачем?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 3 октября 2010 г. 1:54, спустя 2 минуты 13 секунд

    ты перед тем как загнать данные в $_SESSION['user_id'] это проверяешь
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 3 октября 2010 г. 1:55, спустя 45 секунд

    has, зависит от ровня безопастноти, который ты планируешь применять. Только пароль в куках надо обязательно хешировать. И желательно не так как в базе, но чтобы и можно было сравнить.
    vasa_c, у меня сайт на дле есть. Как то однажды сломали там админа с паролем 123456. Ну я сменил пароль через админку, а он все лазит и чета редачит в админке.
  • has

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 3 октября 2010 г. 1:58, спустя 3 минуты 7 секунд

    Сессии не постоянны и данные в них хранятся только на время работы пользователя со скриптом. Поэтому, чтобы пользователь оставался залогиненым после того, как он закрыл и снова открыл на нашей странице свой браузер — необходимо сохранять его авторизационные данные в куках (они хранятся на его компьютере в браузере).
    Мы будем записывать в куки пользователя его логин и хеш пароля. (как записывать что-то в куки, читайте выше по ссылке)
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 3 октября 2010 г. 2:06, спустя 8 минут 4 секунды


    Сессии не постоянны и данные в них хранятся только на время работы пользователя со скриптом. Поэтому, чтобы пользователь оставался залогиненым после того, как он закрыл и снова открыл на нашей странице свой браузер — необходимо сохранять его авторизационные данные в куках (они хранятся на его компьютере в браузере).
    Мы будем записывать в куки пользователя его логин и хеш пароля. (как записывать что-то в куки, читайте выше по ссылке)


    а мы то и не знали.
  • has

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 3 октября 2010 г. 2:14, спустя 8 минут 18 секунд

    SpartakuS, это я к тому, что если будет новый идентификатор сессии и открывать скрипт ./session.php, тогда выдаст:
    Доступ закрыт, даём ссылку на авторизацию. — Авторизоваться

    Это по-твоему нормально?
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 3 октября 2010 г. 2:21, спустя 6 минут 20 секунд

    has, пцц.
    Обычно делают так.
    Ставят галочку типа запомнить меня (я считаю, что лучше галку не запоминать делать).
    Если не запоминать, то просто в сессии и проверять есть ли айди в сессии.
    Если запоминем, то в куки записываем логин и хеш пароля. И в сессию айди. Сначала проверяем айди в сессии. А если айд нет, то смотрим и проверяйем логин пароль в куках. А если они не сходятся и там ничего нет, то тогда уже не авторизван.
    Но если нужна безопасность повыше, то надо записывать в сессии еще и логин с паролем и проверять их, каждый раз или перед важными действиями типа редактирования и тп.
  • has

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 3 октября 2010 г. 2:41, спустя 20 минут 6 секунд

    Если запоминем, то в куки записываем логин и хеш пароля. И в сессию айди. Сначала проверяем айди в сессии. А если айд нет, то смотрим и проверяйем логин пароль в куках. А если они не сходятся и там ничего нет, то тогда уже не авторизван.

    Внимательно прочти что ты написал и что я спрашивал:
    А не нужно проверять в кукках записаны логин/пароль или нет?

    Вот код:
    <?php 

    session_start();

    if (isset($_SESSION['user_id']))
    {
    // показываем защищенные от гостей данные.

    print '<h1>Здрасте!</h1>
    <p>Это закрытая страница.</p>
    <p><a href="index.php">Перейти на главную</a></p>';
    }
    else
    {
    die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>');
    }


    ?>


    в котором отстутствует проверка логина/пароля в куках.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!