Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Регистрация переменных сессии ⇐ ПредыдущаяСтр 2 из 2
После инициализации сессии появляется возможность сохранять информацию в суперглобальном массиве $_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; просмотров: 235; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.41.142 (0.049 с.) |