Введение в PHP
Базы данных MySQL, язык запросов
Отображение данных
Модификация данных
Способы авторизации пользователя

26 мая 2004

Я работаю преподавателем в одной фирме, проводящей курсы по PHP. Может быть кому-нибудь пригодится написанная мной методичка. Буду рад прочитать ваши отзывы.

написать автору

4 Способы авторизации пользователя.

 

Переменные session, cookies.

 

Вы наверняка заметили некоторое «неудобство» при написании программ на php. Все используемые переменные теряются и их необходимо передавать от страницы к странице при помощи средств HTML. Неужели нельзя один раз объявить переменную и затем использовать её на любой странице? Решение есть, для этого используются методы SESSION и COOKIES.

 

SESSION

 

Эти переменные хранятся в памяти сервера. Для пользования ими клиент (пользователь) должен создать сессию, тогда ему присваивается уникальный идентификатор, который будет храниться у клиента и сервера (иначе как сервер сможет отличить клиентов друг от друга ?). При каждом соединении клиент отправляет серверу идентификатор сессии и получает возможность в отведенной ему области памяти создавать и хранить переменные. Сессия закрывается тогда, когда закрывается окно браузера, в котором была создана эта сессия. То есть пользователь может переходить на другие страницы и даже сайты, может прерывать связь с Интернетом, но сессия закроется только когда он закроет окно браузера. Но не стоит забывать, что на сервере может задаваться время жизни сессии, и если клиент в течении некоторого времени не обратился к серверу, то сессия и все данные в ней уничтожаются. Как правило время жизни сессии составляет от нескольких минут до получаса, что является достаточным для комфортной работы.

Для использования переменных сессии необходимо:

·        создать сессию – команда session_start(); начинает новую или продолжает существующую сессию, в любом случае необходимо разместить эту команду на каждой странице, где планируется использование переменных сессии перед их вызовом.

·        зарегистрировать переменную сессии – команда session_register(‘имя_переменной’);   регистрация необходима только перед первым использованием переменной, для создания в памяти сервера области для хранения данных. При повторной регистрации этой же переменной, данные будут потеряны.

·        использование переменных - $_SESSION[‘имя_переменной’];  Таким образом можно обращаться с переменной сессии, как с обычной переменной. Переменная сессии является скалярной и не имеет типов (не надо различать строковые, числовые и тп.)

Пример использования сессии:

 

1.      session_start();

2.      session_register('var_1');

3.      session_register('var_2');

4.      $_SESSION['var_1']=123;

5.      $_SESSION['var_2']=”строка_1”;

 

В строке 1 – регистрация  и старт сессии, строки 2-3 – регистрация переменных, строки 4-5 использование переменных.

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

 

1.      session_start();

2.      echo $_SESSION['var_1'];

3.      echo $_SESSION['var_2'];

4.      $_SESSION['var_1']=456;

5.      $_SESSION['var_2']=”строка_2”;

 

строка 1 – старт сессии, строки 2-3 – вывод на страницу значений переменных сессии, строки 4-5 – присвоение переменным новых значений.

 

COOKIES

 

Переменные cookies – подобно переменным сессии позволяют хранить данные при переходе от одной страницы к другой, но в отличие от них, они хранятся не в памяти сервера, а в виде файлов на компьютере пользователя. Достоинство cookies в том, что они не теряются после закрытия окна браузера, а сохраняются в соответствующей директории браузера. И при последующем посещении сайта, даже через несколько дней, эти данные можно использовать. Недостатки, же их заключаются, в том, что файлы, в которых хранятся данные cookies могут быть похищены злоумышленником, и использованы им. В этом случае программа на сервере не сможет отличить один компьютер от другого, поскольку сервер может получить только название переменной и её значение. Также злоумышленник может изменить значение переменной cookies, поскольку данные хранятся в незашифрованном виде. Шифрование данных не спасет ситуацию, поскольку методом перебора можно расшифровать любую информацию. Ещё одним недостатком является то, что у многих пользователей, в целях безопасности, отключена поддержка cookies в браузере. Это делает невозможным их использование. В таком случае необходимо предусматривать резервный вариант с использованием сессий.

PHP прозрачно поддерживает HTTP cookies. Вы можете установить cookies при помощи функций setcookie(). Cookies являются частью HTTP-заголовка, поэтому setcookie() должна вызываться до любого вывода данных в броузер. Любые cookies, отправленные серверу броузером клиента, будут автоматически преобразованы в переменные PHP, подобно данным методов GET и POST.

Работа с cookies осуществляется просто:

установить cookies - setcookie(‘имя_переменной’, значение переменной);

использовать cookies – $_COOKIE["имя_переменной"];

или эквивалент

                                      $HTTP_COOKIE_VARS["имя_переменной"];

 

пример:

 

установка cookies

setcookie ("var_1", 1234);

setcookie ("var_2", “привет”);

 

использование

echo $_COOKIE[‘var_1’];

echo $_HTTP_COOKIE_VARS [‘var_2’];

 

РЕЗЮМЕ

 

Сессии следует использовать при авторизации пользователей и для хранения секретной информации, а cookies допустимо использовать для запоминания настроек пользователя (например для обеспечения возможности персональной настройки приватной части веб-страницы, как на некоторых почтовых сервисах) или для упрощения авторизации, когда сервер «узнает» пользователя и подставляет его логин в соответствующее поле, и пользователю остается только ввести пароль.

 

 

АВТОРИЗАЦИЯ ПОЛЬЗОВАТЕЛЯ МЕТОДОМ SESSION.

 

Авторизация пользователей осуществляется для ограничения доступа к веб-страницам. Например, в гостевой книге сообщение может оставить любой посетитель, а осуществлять редактирование и удаление сообщений может только администратор ресурса. Каким образом ограничить доступ к веб-странице?  Вот один из способов :

 

 

Пусть у нас имеются две страницы login.php и pagе.php. На первой осуществляется ввод логина и пароля пользователя в поля формы и отправка этих данных на вторую страницу при нажатии кнопки submit. На второй странице производится сравнение введенных данных с настоящими. Они могут храниться как в самой программе в виде констант так и браться из базы данных, если пользователей большое количество. Если проверка прошла успешно, то выполняется программа размещенная на этой странице, а если введенные данные оказались неверными, то осуществляется принудительный переход на другую страницу (в нашем случае это возврат на страницу ввода данных). Если пользователь перешел на страницу page.php не со страницы ввода пароля login.php, а просто набрал в строке адреса “www.mysite.com/page.php” или с другой страницы, не предусматривающей ввода пароля, то при проверке правильности данных, он будет принудительно переадресован на страницу ввода пароля.

Часто бывает, что ограничение доступа необходимо установить на несколько страниц или переходить на одну и ту же страницу несколько раз. В этом случае потребуется ввод данных при каждой загрузке страницы. Для того чтобы этого избежать, можно использовать переменные сессии.

Более правильным будет проводить проверку пароля только один раз при его вводе и записывать в переменные сессии только его логин. В дальнейшем необходимо просто проверять существует ли данная переменная или нет. Кроме этого можно разграничить пользователей по правам, установив переменную «уровень доступа».

Инструменты, при помощи которых это можно выполнить достаточно просты: для ввода данных используются формы; для передачи пароля и логина на страницу проверки логично воспользоваться методом POST; проверку осуществить при помощи условия например:

 

1.      $login=”Вася”;

2.      $password=”1234”;

3.      if ($_POST[‘login’]= =$login AND $_POST[‘password’]= =$password)

4.      {

5.      // выполнение программы

6.      }

7.      else

8.      {

9.      // принудительный переход

10.      };

 

принудительный переход осуществляется при помощи команды header("Location: путь_ к_странице");

например:    header("Location: http://www.mysite.com/login.php");

 

ВНИМАНИЕ: слово Location пишется с заглавной буквы затем идёт двоеточие, а затем после пробела путь к веб-странице.

 

Эта команда должна быть выполнена до вывода информации в браузер (использование echo, тэгов header, meta, любых слов и пробелов).

 

 

 

Екатеринбург 2005г. Найденко Владимир

 

Рейтинг@Mail.ru

Copyright © 2004 by inet-studio
 

Сайт создан в системе uCoz