Как реализовать функцию ? Знаю что нужно сохранить в куках сессию, но не знаю какие именно ? Или подскажите какую-то статью с простым примером ( я искал но ничего хорошего не нашел в интернете ). index.html
Логин
Пароль
home.php
session_start(); $login = trim($_POST[‘login’]); $pass = trim($_POST[‘pass’]); require_once («./config/admin_config.php»); if(isset($login) isset($pass)) < $res = profile($login,$pass); if($res == 1)< $_SESSION[‘register’] = $login; $register = $_SESSION[‘register’]; >> ?> else < include(«./error/error.php»); >
Функция проверки в базе данных логина и пароля:
function profile($login,$pass)
Отслеживать
задан 23 авг 2016 в 16:34
77 8 8 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
не тестировал, но в принципе должно работать. в таблицу admin_profile добавляем поле token
session_start(); $login = trim($_POST[‘login’]); $pass = trim($_POST[‘pass’]); require_once («./config/admin_config.php»); function auth() < if (isset($_COOKIE[‘session’])) < $session = json_decode(base64_decode($_COOKIE[‘session’]), true); if (array_key_exists(‘user_id’, $session) array_key_exists(‘token’, $session)) < $sql = mysql_query(«SELECT * FROM `admin_profile` WHERE `id` = ‘» . $session[‘id’] . «‘ AND `token` = ‘» . $session[‘token’] . «‘»); if (mysql_fetch_assoc($sql)) return true; return false; >> else if (isset($_SESSION[‘register’])) return true; return false; > function profile($login, $pass) < $sql = mysql_query(«SELECT * FROM `admin_profile` WHERE `login`=’$login’ AND `pass`=md5(‘$pass’)»); $res = mysql_fetch_assoc($sql); return $res; >if (isset($login) isset($pass)) < $res = profile($login, $pass); if ($res) < if (isset($_POST[‘remember’]) == 1) < $session = array( ‘user_id’ =>$res[‘id’], ‘token’ => md5(uniqid(null, true)), ); mysql_query(«UPDATE `admin_profile` SET `token` = ‘» . $session[‘token’] . «‘ WHERE `id` = ‘» . $session[‘user_id’] . «‘»); setcookie(‘session’, base64_encode(json_encode($session)), 31536000 + time(), ‘/’); > else < $_SESSION[‘register’] = $login; >> > if (auth() == true) < require_once («./html/home_page.php»); >else < include («./error/error.php»); >
Логин
Поддержим Анджилишку?👸❤️
Пароль
Запомнить меня
Источник: ru.stackoverflow.com
Авторизация. Запомнить меня. Как это делается?
Часто приходится встречать кнопку запомнить меня в меню авторизации. Почти на каждом форуме, почте или блоге, где регистрационные данные не столь ценны – можно встретить такую удобную галочку.
Я буду с тобой как с мразью разговаривать #1win #завод #shorts #bfk22
Почему так устроено?
Все дело в том, что понять, что с этого компьютера вошли именно вы – достаточно проблематично. Сервер может отследить ваш IP и по нему назначить вам сессию, но хранить он ее будет не долго, т.к. через час вашего отсутствия он будет думать, что вы уже ушли и хранить информацию больше ни к чему.
Так, когда вы возвращаетесь на форум на следующие сутки – он вас вдруг вспоминает. Это работает следующим образом – при авторизации – сервер дает команду сохранить логин и шифр пароля у вас на компьютере, в файлах, под названием Куки cookie. И каждый раз, когда вы входите на форум – компьютер автоматически отправляет эти данные и вас узнают.
Получается – это не безопасно? Конечно, хранение файлов с логином и паролем у себя в открытом виде – небезопасно. По этому обычно храниться не сам пароль, а хеш пароля. Но, тем не менее, потенциальная угроза остается.
Кто-то может при помощи не хитрых приспособлений, поместив небольшой кусок Javascript на страницу с форумом – получить эти данные и также, в виде файлов – разместить их у себя. Либо злоумышленник может сделать нехитрый exe файлик, который при запуске будет считывать все ваши файлы cookie и передавать их куда-либо.
Таким образом – Безопасность страдает в угоду удобства.
Как же это делать технически?
Очень просто – при авторизации – вешаем пользователю 2 куки
setcookie(’email’,$login,time()+3600*24*14,’/’); setcookie(‘pass’,sha1($password.’соль-куки’.$login),time()+3600*24*14,’/’);
Время хранения указываем, какое хотим. В примере – 2 недели с момента авторизации
Помним, что в базе данных храниться хеш пароля. Но даже хеш нельзя давать человеку в куку, по этому создаем хеш хеша пароля :). В функцию обязательно пихаем соль и id учетной записи, чтобы сложнее было понять сам пароль и хешу.
Далее – когда пользователь заходит на сайт – проверяем, есть ли у него установленные Куки и сравниваем тот же хеш пароля. На выходе – либо авторизируем, либо уничтожаем Куки.
К примеру можно сделать так в загрузочном файле:
if (!$_SESSION[‘user’][‘id’] and !empty($_COOKIE[’email’]) and !empty($_COOKIE[‘pass’]))login($_COOKIE[’email’],$_COOKIE[‘pass’],true);
Последним – ставим признак сверки хеша хеша пароля ). Когда мы захотим авторизоваться обычным образом – мы просто передадим false.
Сама же функция авторизации может выглядеть простым способом
function login($login,$pass,$ishashing=false)< if (empty($login))return ‘Не указан почтовый ящик email’; if (empty($pass))return ‘Не указан пароль’; // смотрим бд $sql=»SELECT * FROM users WHERE email=»»; $rs=execute($sql); if (empty($rs[’email’]))return ‘Пользователь не найден’; $math=false; if ($ishashing)< if ($pass==sha1($rs[‘password’].’соль-куки’.$login))$math=true; >else < if (sha1($pass.’соль-при-регистрации’)==$rs[‘password’])$math=true; >if (!$math) < if ($ishashing)< setcookie(’email’,»,0,’/’); setcookie(‘pass’,»,0,’/’); return false; >return ‘Пользователь с данным паролем не найден’; > $_SESSION[‘user’]=$rs; setcookie(’email’,$login,time()+3600*24*14,’/’); setcookie(‘pass’,sha1($rs[‘password’].’соль-куки’.$login),time()+3600*24*14,’/’); return true; >
Думаю вопросов много не будет. Сперва проверяем данные, смотрим данные из базы.
Сравнение зависит от типа хеша. При обычном сравнении – идет сравнение с солью, данной при регистрации, а при хешированном – хеш еще раз хешуется.
Переменная login не должна меняться для пользователя, иначе пароли тоже перестанут срабатывать.
Вполне простая процедура, не требующая хитрых приспособлений
Источник: kosmom.ru
Как создать систему входа в систему с функцией запомнить меня в PHP
В этом руководстве мы создадим систему аутентификации с функцией «запомнить меня», которая позволит веб-приложениям сохранять статус входа пользователя в систему. Когда пользователь пытается войти в систему, указав свое имя пользователя и пароль, приложение проверяет учетные данные для входа в систему с данными, хранящимися в базе данных. Если совпадение существует, веб-приложение сохраняет идентификатор пользователя и статус входа в систему перед перенаправлением пользователя на панель управления.
Звучит просто. Правильно?
Но что это за функция «запомни меня»?
Функция «Запомнить меня» — это способ облегчить пользователям работу с веб-приложениями. Обычно, когда пользователь вводит данные для входа в систему, появляется флажок с надписью «Запомнить меня». Если пользователь решит установить этот флажок, веб-приложение запомнит его, даже если он закроет веб-браузер. Благодаря этой функции пользователю не нужно повторно входить в веб-приложение. Веб-приложение сохранит данные для входа пользователя в файлы cookie.
Логика
Чтобы получить доступ к базе данных веб-приложения, пользователь должен ввести свои учетные данные для входа в веб-форму.
Теперь может быть два случая:
1. Пользователь вводит правильную информацию.
2. Пользователь вводит неверный логин или пароль.
В случае неверного имени пользователя или пароля, пользователь будет снова перенаправлен на страницу входа, где будет отображаться сообщение об ошибке.
Если пользователь вводит правильную информацию, страница входа перенаправит его на страницу панели инструментов, откуда он также может выйти.
Если пользователь установит флажок «Запомнить меня» при входе в систему, веб-приложение сохранит его учетные данные в файлах cookie в течение 30 дней. Это означает, что если он закроет браузер вместо надлежащего выхода, ему не придется повторно входить в систему для доступа к приложению в течение 30 дней.
Если пользователь выходит из системы, веб-приложение полностью удаляет все переменные сеанса и файлов cookie пользователя.
В приложении четыре страницы: login.php, login_ac.php, dashboard.php и logout.php. При любой попытке доступа к внутренним страницам будет отображаться сообщение об ошибке несанкционированного доступа.
Теперь, когда вы поняли логику, давайте углубимся в код.
Начнем с базы данных.
Вы можете использовать консоль MySQL или интерфейс PHPMyAdmin для создания базы данных с именем login_system.
Теперь создайте таблицу users, в которой будет храниться информация для входа в систему.
УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ `users`;
СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ `users` (
`user_id` int (11) НЕ ПУСТО,
varchar (25) NOT NULL, user_name
varchar (100) NOT NULL, user_pass
отметка времени `join_date` НЕ NULL,
ПЕРВИЧНЫЙ КЛЮЧ (`user_id`)
) ДВИГАТЕЛЬ = СИМВОЛ ПО УМОЛЧАНИЮ MyISAM = latin1;
Заполните фиктивные данные
При вводе данных мы выбираем MD5, алгоритм хеширования, который зашифрует пароль. Вы можете выбрать любой алгоритм хеширования для шифрования пароля пользователя.
Поскольку это руководство предназначено только для образовательных целей, вы можете выбрать слабый пароль, например 123, для системы аутентификации пользователя.