Запомнить меня (Авторизация) на PHP

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Местный бот
Сообщения: 153

Запомнить меня (Авторизация) на PHP

Сообщение Местный бот » Пт мар 20, 2015 2:34 pm

Доброго дня. Почти на всех сайтах имеющих регистрацию, при авторизации есть функция Запомнить меня. Ставишь галочку и сайт запоминает тебя на долго. Я понимаю, что такое на сессии не сделаешь, только на куках, а как именно не понимаю.

Может расскажите?
Спасибо.
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
Реклама
lyod
Сообщения: 76

Re: Запомнить меня (Авторизация) на PHP

Сообщение lyod » Пт мар 20, 2015 2:46 pm

Если выставлена галочка - устанавливаете время "жизни" cookie, например на месяц. Если не выставлена - посылаете cookie с действием только в текущей сессии.

Код: Выделить всё

# Если галочка выбрана - устанавливаем время действия на месяц
$expire = isset( $_POST['remember-me'] ) ? time()+60*60*24*30 0;

# Отправляем cookie
setcookie("имя cookie"'значение'$expire);
 
Аватара пользователя
Местный бот
Сообщения: 153

Re: Запомнить меня (Авторизация) на PHP

Сообщение Местный бот » Пт мар 20, 2015 3:15 pm

Спасибо.
А переменная $_POST['remember-me'] - это и есть та самая галочка?
Получается если галочка стоит, то сработает условие для установки срока кук?

И что надо вставить вместо слова значение?
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
lyod
Сообщения: 76

Re: Запомнить меня (Авторизация) на PHP

Сообщение lyod » Пт мар 20, 2015 3:27 pm

А переменная $_POST['remember-me'] - это и есть та самая галочка?

Да, именно.
Получается если галочка стоит, то сработает условие для установки срока кук?

Всё правильно.
И что надо вставить вместо слова значение?

Цитата документации:
Значение cookie. Это значение будет сохранено на клиентском компьютере; не записывайте в cookie секретные данные. Значение присвоенное cookie c именем name, допустим, 'cookiename', будет доступно через $_COOKIE['cookiename'].

Подробнее: http://php.net/manual/ru/function.setcookie.php
Аватара пользователя
Местный бот
Сообщения: 153

Re: Запомнить меня (Авторизация) на PHP

Сообщение Местный бот » Пт мар 20, 2015 4:02 pm

Прочитал, но все ровно не дошло. Я понял так, что вместо слова значение, с Вашего примера, надо вставить имя пользователя и пароль. Так или как?
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
lyod
Сообщения: 76

Re: Запомнить меня (Авторизация) на PHP

Сообщение lyod » Сб мар 21, 2015 9:33 am

Я понял так, что вместо слова значение, с Вашего примера, надо вставить имя пользователя и пароль.

Нет, ни в коем случае не пишите в COOKIE открытые логины и пароли. Надо шифровать. На самом деле есть масса различных вариаций по организации авторизации пользователя.
Галочка "Запомнить меня" тут ни при чём, она просто выставляет длительность жизни cookie. Вам нужно читать статьи, как организовать авторизацию.
Тут писать я не вижу смысла, так как в интернете уже уйма статей, посвящённых этой теме.
Почитайте тут: Регистрация/Авторизация на сайте PHP и MySQLi (хотя тут авторизация на сессиях) или наберите в поисковике фразу "авторизация cookie php" - получите много информации по этой теме.
Аватара пользователя
Вирус
Сообщения: 28

Re: Запомнить меня (Авторизация) на PHP

Сообщение Вирус » Пн апр 13, 2015 1:29 pm

lyod, можете показать пример формы с галочкой и сам php скрипт для сохранения имени и пароля?
С примера выше Re: Запомнить меня (Авторизация) на PHP я ни чего не понял. :oops:

Спасибо.
lyod
Сообщения: 76

Re: Запомнить меня (Авторизация) на PHP

Сообщение lyod » Вт апр 14, 2015 8:49 pm

Код: Выделить всё

<form action="login.php">
        <input type="text" name="login"/>
        <input type="password" name="password"/>
        <label>
            <input type="checkbox" name="remember" value="1"/>
            Запомнить меня
        
</label>
    </form>

login.php:

Код: Выделить всё

<?php
    
# Тут получаете логин, пароль
    # ...
    
    
# Получаем, нужно ли запомнить
    $remember = isset($_POST['remember']) ? $_POST['remember'] : 0;
    
    
# Тут производите проверку на правильность логина и пароля
    # ...
    
    
# Если логин и пароль верны - устанавливаем cookie
    if( ... ){
            # Если галочка выбрана - устанавливаем время действия на месяц 
            # А если не выделена - устанавливаем, что cookie будет жить только до окончания сессии
            $expire = $remember ? time()+60*60*24*30 : 0; 
            
            
# Отправляем cookie 
            setcookie("имя cookie", 'значение', $expire);
    }
?>

Вам, я думаю, стоит почитать документацию функции setcookie на http://php.net, станет понятнее.
Аватара пользователя
Местный бот
Сообщения: 153

Re: Запомнить меня (Авторизация) на PHP

Сообщение Местный бот » Пт апр 24, 2015 8:33 am

А при работе с куками, функцию session_start() использовать не надо?
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
lyod
Сообщения: 76

Re: Запомнить меня (Авторизация) на PHP

Сообщение lyod » Пт апр 24, 2015 11:43 am

Местный бот, нет, этого делать не надо. Мы же не сессии используем, а cookie, напрямую.
Аватара пользователя
Местный бот
Сообщения: 153

Re: Запомнить меня (Авторизация) на PHP

Сообщение Местный бот » Пт апр 24, 2015 1:52 pm

lyod, спасибо тебе! Ты очень отзывчив! :) . Я благодаря тебя начинаю понимать работу Кук, при чем не разбираясь в PHP целом. Написал инструкцию: Как проверить существуют ли Куки (COOKIE).

Но все же у меня ещё масса вопросов, если ещё до смерти не замучил, то вот:
Если в функцию setcookie() нельзя писать логин и пароль (т. к. это опасно), то как при заходе на сайт скрипт определяет кому из пользователей должен быть открыт доступ? Проверяется как по ID? Или как?

Благодарю.
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
lyod
Сообщения: 76

Re: Запомнить меня (Авторизация) на PHP

Сообщение lyod » Пт апр 24, 2015 3:02 pm

Во framework'ах, например, используется обратимое хэширование по ключу. Данные хэшируются по ключу и отправляются в cookie. Т.е. расшифровать эту cookie никто не сможет, не зная ключа.
А когда cookie получаются от пользователя, скрипт его расшифровывает и уже ищет в базе по данным, полученным из cookie.

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость