Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Регистрация переменных сессииСодержание книги
Поиск на нашем сайте После инициализации сессии появляется возможность сохранять информацию в суперглобальном массиве $_SESSION или $HTTP_SESSION_VARS. То, что в них сохраняется называется сеансовыми переменными. $_SESSION [ 'username' ] = "username"; // или $HTTP_SESSION_VARS [ 'username' ] = "username";
Для корректной работы приложения необходимо проверять, установлены ли переменные сессии. Такую проверку можно сделать, к примеру, так: if ( isset ( $_SESSION ['username'] )) Закрытие сессии После завершения работы с сессией сначала нужно разрегистрировать все переменные сессии, а затем вызвать функцию session_destroy:
Для разрегистрации используют функцию: Unset Синтаксис: unset ( $_SESSION ["username"] );
Для закрытия сессии: session_destroy Синтаксис: bool session_destroy (void);Идентификатор сессии При открытии сеанса создается его идентификатор. Узнать значение идентификатора можно с помощью функции: string session_id ([string id]) При отсутствии параметра функция возвращает идентификатор сессии. При наличии параметра функция задает идентификатор сессии. Задавать свой идентификатор можно только до открытия сессии. Примеры простых сессий Пример1 <?php session_start (); //Если $_SESSION[“var”] не существует или пуст, то этому элементу присваивается значение 1. if (! $_SESSION ['var']) { $_SESSION ['var']=1;}//Иначе производится инкремент значения этого элемента массиваelse { $_SESSION ['var']++;}//вывод на экран echo $_SESSION ['var']."<br>"; ?>
При каждом обращении к странице на экран выводится счетчик обращений к странице, которые были выполнены в течение данного сеанса. При каждом щелчке на кнопке браузера ОБНОВИТЬ цифра посещений увеличивается на единицу. Но после закрытия браузера и открытия снова, счетчик начнет счет с 1, т.к. предыдущая сессия была закрыта и стартовала новая. Пример2 <?php session_start (); if (! $_SESSION ['var']) { $_SESSION ['var']=1;}else { if ($_SESSION ['var'] < 7) { $_SESSION ['var']++; } else { session_destroy (); }} echo $_SESSION ['var']."<br>"; ?>Здесь выполняются те же действия, что и в предыдущем примере, за исключением того, что счетчик не превысит 7 и начнет счет с 1. Так как функция session_destroy () останавливает передачу данных сессии в скрипт, но не уничтожает сессионных переменных для текущего скрипта, то цифра 7 будет выведена дважды. Для моментального уничтожения сессионной переменной служит функция unset (). unset ($_SESSION['var']);
Пример3 Рассмотрим пример простой сессии, работающей с тремя страницами. При посещении пользователем первой страницы открывается сессия и регистрируется переменная $username. Соответствующий код реализации приведен в листинге: <? session_start (); $_SESSION ['username'] = "maksim"; echo 'Привет, ' .$_SESSION ['username']."<br>"; ?> <a href="page2.php">На следующую страницу </a> Результат работы этого сценария:
После этого, пользователь maksim нажимает на ссылку и попадает на страницу page2.php, код которой приведен в листинге: <? session_start (); echo $_SESSION ['username'].', ты пришел на другую страницу этого сайта!'; echo( "<br>" );?> <a href="page3.php">На следующую страницу </a>Результат работы этого скрипта:
При нажатии на ссылку, пользователь попадает на страницу page3.php, при этом происходит разрегистрация сеансовой переменной и уничтожение сессии. Соответствующий код реализации приведен в листинге: <? session_start (); unset ( $_SESSION ['username'] ); // разрегистрировали переменную echo 'Привет, ' .$_SESSION ['username']; /* теперь имя пользователя уже не выводится */ session_destroy (); // разрушаем сессию?> Как видно из рисунка, после разрегистрации сеансовой переменной значение массива $_SESSION ['username'] уже недоступно:
Аутентификация
Защита одной сраницы: <html> <head> <title>Аутентификация пользователей</title> </head> <body> <?php if (isset($_POST["user"]) && isset($_POST["pass"]) && strtolower($_POST["user"]) == "shelley" && $_POST["pass"] == "deadline") { ?> Добро пожаловать! Здесь вы найдете всю правду о JFK... <?php } else { ?> Пожалуйста, зарегистрируйтесь! <form method="post"> Имя пользователя: <input type="text" name="user" /><br /> Пароль: <input type="password" name="pass" /><br /> <input type="submit" name="Вход" /> </form> <?php } ?> </body> </html>
Для защиты большего количества страниц от несанкционированного доступа единственным вариантом, работающим в любых условиях является использование PHP сеансов. Информация о результатах прохождения процедуры аутентификации пользователем хранится в переменных сеанса. Благодаря возможности управления PHP сеансами, эта информация будет доступна на всех страницах Web-приложений.
Пример включает три сценария. Первый, authmain.php, обеспечивает форму для входной регистрации и аутентификации пользователей Web-сайта. Второй, members_only.php, представляет информацию только для тех пользователей, которые успешно прошли входную регистрацию. Третий, logout.php, реализует выход пользователей из системы. Рис. 1. - это исходная страница, отображаемая сценарием authmain.php. Данная страница предоставляет пользователю возможность войти в систему. В случае, если он предпримет попытку получить доступ к секции Members, не пройдя входную регистрацию, будет выдано сообщение, показанное на рис. 2, генерируемое сценарием members_only.php.
Рис. 1 Рис. 2 Если же пользователь сначала прошел входную регистрацию, а после этого предпринял попытку войти на страницу Members, он увидит то, что представлено на рис. 3 (результат сценария members_only.php).
Рис. 3 Большая часть кода сосредоточена в сценарии authmain.php Работа этого сценария сосредоточена вокруг переменной сеанса $valid_user. Основная идея здесь заключается в следующем: если кто-либо успешно прошел процедуру входной регистрации, мы регистрируем переменную сеанса с именем $valid_user, которая содержит идентификатор пользователя.
Черный – выполняется всегда. Красный – выполняется при загрузке страницы Коричневый – выполняется всегда при нажатии кнопки (при регистрации) Синий – выполняется при нажатии кнопки и отсутствии в базе данных пользователя Зеленый - выполняется при нажатии кнопки и нахождении в базе данных пользователя
Authmain.php <? session_start();
if ($_POST[“userid”] && $_POST[“password”]) { // Если пользователь попытался зарегистрироваться (нажал кнопку на форме) $userid = $_POST[“userid”]; $password = $_POST[“password”]; $db_conn = mysql_connect("localhost", "webauth", "webauth"); mysql_select_db("auth", $db_conn); $query = "select * from auth.where name='$userid'.and pass=MD5('$password')"; $result = mysql_query($query, $db_conn); if (mysql_num_rows($result) >0) { // Если пользователь найден в базе данных, регистрируем его идентификатор $_SESSION[“valid_user”] = $userid; } } ?> <html> <body> <h1>Home page</h1> <?
if (isset($_SESSION["valid_user"])) { echo "You are logged in as: $valid_user <br>"; //Вы зарегистрированы как: echo "<a href=\"logout.php\">Log out</a><br>"; } else { if (isset($userid)) { // Была предпринята неудачная попытка зарегистрироваться echo "Could not log you in"; //Регистрация невозможна } else { // Пользователь либо не пытался войти, либо уже вышел echo "You are not logged in.<br>"; //Вы не зарегистрированы }
// Форма для регистрации echo "<form method=post action="authmain.php">"; echo "<table>"; echo "<tr><td>Userid:</td>"; echo "<td><input type=text name=userid></td></tr>"; echo "<tr><td>Password:</td>"; echo "<td><input type=password name=password></td></tr>"; echo "<tr><td colspan=2 align=center>"; echo "<input type=submit value=\"Log in\"></td></tr>"; echo "</table></form>"; } ?> <br> <a href="members_only.php">Members section</a> </body> </html>
members_only.php <? session_start();
echo "<h1>Members only</h1>"; //Только для зарегистрированных пользователей
// Проверить переменные сеанса
if ($_SESSION["valid_user"]) { echo "<p>You are logged in as: $valid_user.</p>"; //Вы зарегистрированы как: echo "<p>Members only content goes here</p>"; Текст только для зарегистрированных } else { echo "<p>You are not logged in.</p>"; //Вы не являетесь зарегистрированным пользоват. echo "<p>Only logged in members may see this page.</p>"; //Эта стр. Для Вас //не доступна }
echo "<a href="authmain.php">Back to main page</a>"; //Назад на главную стр. ?>
Logout.php <? session_start();
$old_user = $_SESSION[“valid_user”]; //Сохранить для проверки, //регистрировался ли пользователь unset ($_SESSION["valid_user"]); session_destroy(); ?> <html> <body> <h1>Log out</h1> //Выход <? if (!empty($old_user)) //Аналог isset { echo "Logged out.<br>"; //Успешный выход } else { //Если пользователь не был зарегистрирован, но каким-то образом попал на эту страницу echo "Разрегистрация не нужна, т.к. Вы не были зарегистрированы.<br>"; } ?> <a href="authmain.php">Back to main page</a> //Назад на главную страницу </body> </html>
|
||
|
Последнее изменение этой страницы: 2017-01-19; просмотров: 329; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.009 с.) |