Эта тема важна. Сами сессии часто используют для авторизации. Сессии очень трудно перехватить. Они работают на стороне сервера и хранятся в специальных папках, доступ к которым закрыт. Я очень часто использую сессии при авторизации. Вам нужно запустить сессии. В самый верх страницы поместите функцию session_start(). Я помещаю в переменную $_SESSION['auth'] значение 1. Если $_SESSION['auth'] == 1, то пользователь авторизован. Ему открыт доступ ко всем страницам сайта. При выходе или завершении сеанса пользователя скрипт должен удалять переменную $_SESSION['auth']. Применяйте для удаления переменной функцию unset($_SESSION) или session_unset().
Помните, что сессии $_SESSION - это массив PHP. Вы можете применить функцию var_dump(). Она покажет вам тип данных конкретной переменной. Если у сайта большая посещаемость, то используйте сессии с особой осторожностью. Если массив в сессии имеет большое количество элементов, то сведите до минимума количество элементов массива. Вы можете хранить данные в куках. Куки хранятся у вас на компьютере. В идеале нужно важную информацию хранить в сессии, а информацию доступную для пользователя хранить в куках. Например, настройка дизайна сайта (цвет, размеры блоков) лучше хранить в куках.
Я видел несколько видеоуроков, в которых была показана авторизация, основанная на куках. Это довольно рискованное мероприятие. Куки постоянно шифруют при помощи функции crypt() с специальными ключами. Тут без шифрования не обойтись. Еще в подобных случаях для переменных выставляют небольшое время жизни размером 15 минут. Очень часто запрашивается повторная авторизация в случае бездействия пользователя.
У сессий есть небольшое преимущество перед куками. Куки на некоторых браузерах отключают, а вот сессию нельзя отключить. Решайте сами какую авторизацию сделать на сайте? Начните с сессии. Пример простой авторизации на PHP.
session_start();
// эта функция должна быть самой первой после объявления php
$arr = $_POST;
if(!empty($arr['login']) && !empty($arr['pass']))
{
if($arr['login'] == 'egor' && $arr['pass'] == '1234')
{
$_SESSION['auth'] = 1; //пользователь авторизован
}
}
if($_SESSION['auth'] == 1)
{
echo 'пользователь авторизован';
}
else
{
session_unset(); // удаляем сессию
echo 'доступ запрещен';
}
Покажу вам как зашифровать пароль при помощи функций sha1() и md5(). Для этого случая придётся запомнить пароль или записать его в надёжное место.
//шифрование при помощи md5() и sha1()
$arr['pass'] = '1234';
$passDb = md5(sha1($arr['pass']));
//700c8b805a3e2a265b01c77614cd8b21
if($passDb == '700c8b805a3e2a265b01c77614cd8b21')
{
echo 'пользователь авторизован';
}
Многие программисты считают, что можно расшифровать символы, зашифрованные функцией md5(). Существуют массивы с большим количеством расшифрованных символов md5(). Их перебирают при помощи цикла foreach(). Для того чтобы усложнить взлом вашего пароля используйте секретные слова. Посмотрите на пример. Обратите внимание, что секретное слово вставляется как внутрь функции, так и присоединяется к зашифрованному значению.
//секретное слово
$arr['pass'] = '12345';
$secret = 'secretWord12345';
$passDb = md5(sha1($arr['pass'].$secret)).$secret;
//8d7377d6de88f39a97def71acb9163c2secretWord12345
if($passDb == '8d7377d6de88f39a97def71acb9163c2secretWord12345')
{
echo $passDb.', пароль совпадает';
}