«Инструментальные средства разработки программного обеспечения» (профессиональный модуль) МДК: «Web технологии» 3 курс Практическая работа №23 Тема: «Сессии. Счетчик посетителей с использованием сессий. Использование сессий при авторизации» Цель: «Научиться создавать и использовать сессии для оптимизации работы сайта» Теоретическая часть Введение Сессии – это механизм, который позволяет создавать и использовать переменные, сохраняющие свое значение в течение всего времени работы пользователя с сайтом. При каждом заходе на сайт пользователь получает новые значения переменных, позволяющие идентифицировать его в течение сеанса работы с сайтом. При идентификации пользователю присваивается уникальный номер (например: ac4f4a45bdc893434c95dcaffb1c1811). Это необходимо для того, чтобы при переходе на другую страницу или при перезагрузке сохранялись данные логина и пароля и не требовалась новая авторизация. С помощью сессий можно создавать счетчики посещений сайта. Создание сессии Запускаем механизм сессий: session_start(); Получив такую команду, сервер создает новую сессию с помощью идентификатора, переданного по запросу. Все идентификаторы по умолчанию хранятся на сервере в переменной PHPSESSID. Они передаются с помощью механизма cookies или с помощью методов POST- и GET- запросов. Если идентификатор найден, то пользователь считается идентифицированным иначе создается новый идентификатор. Команда session_start(); вызывается в нужном скрипте всегда в начале страницы до вывода каких-либо других данных. Получить созданный идентификатор можно с помощью функции session_id().Для наглядности сесии можно задать имя с помощью функции session_name([имя_сессии]). Делать это нужно до инициализации сессии. Получить имя можно с помощью той же функции session_name(). Пример создания сессии: <?php session_start(): echo session_id (): ?> <html> <head> <title>Заголовок</title> </head> <body> 1 <h1></h1> </body> </html> <?php echo_sesson_name (): ?> На экране должны появиться идентификатор и имя сессии. Т.к. мы имя не задавали, то появится имя по умолчанию PHPSESSID. Регистрация переменных сессии Для передачи и сохранения наших логина и пароля необходимо их зарегистрировать в сессии с помощью глобального ассоциативного массива $_SESSION $_SESSION [ ‘имя переменной ] = ‘значение переменной’; Доступ к таким переменным осуществляется с помощью массива $_SESSION [ ‘имя переменной ] Пример регистрации переменных: authorize.php При регистрации были занесены следующие данные: $login = ‘pit’; $passwd = ‘12345’; <?php session_start(); if (!isset (POST [‘go’])) { echo “<form> login: <input type = ‘text’ name= ‘login’ > password: <input type = ‘password’ name = ‘passwd’> <input type = ‘submit’ name = ‘go’> </form>” } else { $_SESSION [‘login’] = $_POST [‘login’]; $_SESSION [‘passwd’] = $_POST [‘passwd’]; if $_POST [‘login’] == ‘pit’ && $_POST [‘passwd’] == ‘12345’ } //направляется на нужную стрaницу } else echo “Неверный ввод, попробуйте еще раз <br>”; } print_r ($_SESSION); //выводим все переменные сессии ?> Все переменные нашей сессии будут выглядеть так: Array ( [ login ] => pit [ passw ] => 12345) После создания этих переменных можно работать на всех страницах сайта без повторной авторизации. Удаление переменных сессии происходит при закрытии браузера. Если необходимо заранее закрыть переменные сессии, то можно воспользоваться функциями session_unset() или функцией session_destroy(). Создание счетчика посещений 2 Счетчик будет учитывать количество обновлений страницы. При каждом обновлении страницы он будет увеличиваться на 1, а при закрытии браузер – обнуляется. session_start(); /* Переменная $_SESSION['counter']будет нашим счетчиком. Если скрипт запускается первый раз — она будет пуста, присвоим ей единицу. Если не первый раз — тогда прибавим единицу. */ if ( !isset($_SESSION['counter']) ) { $_SESSION['counter'] = 1; } else { $_SESSION['counter'] = $_SESSION['counter'] + 1; } //Выведем значение счетчика: echo 'Вы обновили эту страницу '.$_SESSION['counter'].' раз!'; /* Обновите страницу несколько раз, посмотрите на то, как увеличивается значение переменной. Затем закройте браузер и откройте снова — убедитесь в том, что переменная обнулилась! */ Практическая часть Задание 1. Спросите имя пользователя с помощью формы и сохраните его в сессии. При обновлении страницы поприветствуйте пользователя. Задание 2. Спросите у пользователя email с помощью формы. Затем сделайте так, чтобы в другой форме (имя, фамилия, пароль, email) при ее открытии поле email было автоматически заполнено. Задание 3. Добавление сессии в скрипт. Добавьте сессии в скрипт авторизации из предыдущей работы №21 для переменных $id и $user и выведите фразу «Привет, имя пользователя (логин)». session_start(); $_SESSION['id'] = $user['id']; $_SESSION['login'] = $user['login']; echo 'Привет, '.$_SESSION['login']; 3