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

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

  • VaseninM

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

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

    has, вот эту проверку надо в начале каждого скрипта засунуть.
    // если пользователь не авторизован
    if (!isset($_SESSION['user_id'])) {
    // то проверяем его куки
    // вдруг там есть логин и пароль к нашему скрипту

    if (isset($_COOKIE['login']) && isset($_COOKIE['password'])) {
    // если же такие имеются
    // то пробуем авторизовать пользователя по этим логину и паролю
    $login = mysql_real_escape_string($_COOKIE['login']);
    $password = mysql_real_escape_string($_COOKIE['password']);

    // и по аналогии с авторизацией через форму:

    // делаем запрос к БД
    // и ищем юзера с таким логином и паролем

    $query = "SELECT `id`
    FROM `users`
    WHERE `login`='{$login}' AND `password`='{$password}'
    LIMIT 1";
    $sql = mysql_query($query) or die(mysql_error());

    // если такой пользователь нашелся
    if (mysql_num_rows($sql) == 1) {
    // то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)

    $row = mysql_fetch_assoc($sql);
    $_SESSION['user_id'] = $row['id'];

    // не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
    }
    else {
    // только мы не будем давай ссылку на форму авторизации
    // вдруг человек и не хочет был авторизованым
    // а пришел просто поглядеть на наши страницы как гость
    }
    }
    }
  • md5

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

    Spritz 4 октября 2010 г. 10:52, спустя 2 часа 58 минут 12 секунд

    как это толку нет?
    оно проверяет куки, если все хорошо - стартует сессию

    а дальше уже проверяется сессия, не надо куки каждый раз дергать
    все умрут, а я изумруд
  • Alex-Onis

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

    Spritz 28 октября 2010 г. 5:41, спустя 23 дня 18 часов 48 минут

    Здраствуйте!!! Просмотрел ваш пример авторизации, он мне он очень понравился!!! Помогите на основе вашего примера сделать доступ группе пользователей!!! Что то, типа такого: пользователь admin принадлежит к группе admins, и может видеть всю информацию на закрытой страничке (страницах) пользователь: user пренадлежит группе users, и может на той же закрытой страничке (страницах), видеть только то, что ему разрешено увидеть. Заранее спасибо!!!
  • Troy

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

    Spritz 28 октября 2010 г. 6:00, спустя 18 минут 52 секунды

    И СРОЧНА!!!!!
  • Абырвалг

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

    Spritz 28 октября 2010 г. 6:02, спустя 2 минуты 53 секунды

    Alex-Onis, гугли Zend_Acl, но это наверно будет сложновато для тебя пока что
  • Alex-Onis

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

    Spritz 28 октября 2010 г. 7:28, спустя 1 час 25 минут 28 секунд


    Alex-Onis, гугли Zend_Acl, но это наверно будет сложновато для тебя пока что
    Да сложновато!!! Надо ли создавать еще одну таблицу для групп в Mysql используя Zend_Acl, если да то какую?
  • LIFF

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

    Spritz 28 октября 2010 г. 11:28, спустя 4 часа 34 секунды

    Alex-Onis, ничего сложно нет, я уверен что вы даже ни читали про Zend_Acl раз такие вопросы появляются.

    {+++6+++} P.S. Можно создавать, можно не создавать)
  • LIFF

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

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

    Spritz 9 декабря 2010 г. 3:23, спустя 41 день 16 часов 49 минут

    Подскажите по безопасности. Сейчас у меня в каталоге www лежит каталог админ, в админ лежат управляющие скрипты (добавить рубрику, удалить и т.п.), там же лежит каталог со скриптами - authmy. Нужно мне что-то делать для безопасности (добавить какой-нибудь htaccess или еще что)?
    И попутно как правильно быть с файлом подключения к БД?
    у меня в главном каталоге www находится каталог inc в котором лежат db.inc, function.inc и menu.inc.
    Сейчас уже кое что прочел и понял что это ахтунг, и нужно переименовать inc в php и закинуть туда попутно htaccess. Надо что-то еще сделать? Как вобще все правильно сделать? Как вы обычно делаете?
  • artoodetoo

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

    Spritz 9 декабря 2010 г. 12:45, спустя 9 часов 22 минуты 25 секунд

    deny .htaccess и deny в конфиге nginx, если есть, будет достаточно.
    можно в принципе и не переносить в подкаталог, а задать условие по маске файла
    ιιlllιlllι унц-унц
  • Dimitryus

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

    Spritz 25 января 2011 г. 14:01, спустя 47 дней 1 час 15 минут

    Вопрос по безопасности кода.
    Хотел поставить ваш код, так как нравиться простотой. Но как защитится от такого …
    <?php
    session_start();
    $_SESSION[&#39;user_id&#39;] = 1;

    header(&#39;Location: index.php&#39;);
    ?>

    Тест показал, что если знать номер пользователя, то можно зайти.
  • Frozzeg

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

    Spritz 25 января 2011 г. 14:26, спустя 25 минут 13 секунд

    хранить в сессии специальный хеш, для этого отвести в базе данных спецаильную ячейку для этого хеша, при авторизации записывать авторизационный хеш в базу данных, параллельно записав его в сессию, потом проверять, если хеш, взятый из сессии существует в базе, то взять данные пользователя из базы, у которого был найден этот хеш

    при написании этого поста ни один хеш не пострадал, слово хеш было использовано 7 раз
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Dimitryus

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

    Spritz 25 января 2011 г. 18:02, спустя 3 часа 35 минут 45 секунд

    Спасибо, извиняюсь за глупый вопрос, совсем забыл. =(
  • md5

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

    Spritz 25 января 2011 г. 19:59, спустя 1 час 57 минут 25 секунд


    Вопрос по безопасности кода.
    Хотел поставить ваш код, так как нравиться простотой. Но как защитится от такого …
    <?php
    session_start();
    $_SESSION[&#39;user_id&#39;] = 1;

    header(&#39;Location: index.php&#39;);
    ?>

    Тест показал, что если знать номер пользователя, то можно зайти.
    от какого такого?
    как кто-то может что-то записать в сессию? сессия хранится на сервере
    все умрут, а я изумруд
  • prodigy

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

    Spritz 28 марта 2011 г. 11:28, спустя 61 день 14 часов 28 минут

    Удалил юзера из базы, теперь браузер выдает такое:

    Неверное перенаправление на странице
    Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
    Эта проблема может возникать при отключении или запрещении принятия кук.

    Шо делать???

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