$27.44


$49.46


$32.19


Использование сессий в PHP

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

Для того, чтобы в скрипте можно было работать с сессиями, необходимо сначала инициализировать механизм сессий. Делается это с помощью функции session_start(). При этом будет создана новая сессия или восстановлена уже существующая. Как сервер узнает что ему делать: создавать или восстанавливать? Очень просто. Дело в том, что когда посетитель заходит на сайт, ему присваивается 32-х разрядный идентификатор вида: abcd1efgh2ijkl3mnop4qrs5tuv6wxyz, который «следует» за ним при всех перемещениях по сайту. «Следование» обеспечивается либо по средствам cookies, либо, если они отключены у пользователя, добавлением ко всем адресам GET-запроса вида: PHPSESSID=идентификатор, т.е. адрес myscript.php превратиться в myscript.php?PHPSESSID=идентификатор. При обработке запроса на сервере движок php ищет идентификатор в переданных ему данных и, если находит и сессия не устарела, то обновляет ее. В противном случае создается новая. Кстати, идентификатор сессии можно получить с помощью функции session_id();



После того, как механизм сессий был инициализирован в скрипте мы можем сохранять любую информацию в ассоциативном массиве $_SESSION. Этот массив является глобальной переменной сессии. Таким образом, сохранив в нем, к примеру, значения переменных login и password на странице авторизации мы можем использовать их на всех остальных страницах защищенной части сайта.

Завершение сессии происходит либо автоматически по истечению определенного промежутка времени, либо принудительно при использовании функции session_destroy().

Ну вот, с теорией мы разобрались, теперь настало время применить ее на практике. Для этого напишем 3 скрипта: login.php — авторизация посетителей, protected.php — закрытая страница и logout.php — завершение работы.
login. php
<?session_start(); //инициализирум механизм сесссийif(!isset($_POST[«ok»])) {// если форма не заполнена, то выводим ее    echo«            Страница авторизации            Login:    
Password:    

            »;}else{        //предполагается, что информацию о пользователях вы    //храните в базе данных, в таблице users, содержащей поля id, login, pass    $db=mysql_connect(«host», login«, »password«);    mysql_select_db(»db_name«, $db);        //проверяем есть ли пользователь с таким login»ом и password«ом    $res=mysql_query(«SELECT * FROM users WHERE login=»«.$_POST[«login»].»«        AND pass=»«.$_POST[«pass»].»«», $db);    if(mysql_num_rows($res)!=1){    //такого пользователя нет        echo «Введены не верные логин или пароль»;    }    else{    //пользователь найден        $_SESSION[»login«]=$_POST[»login«];    //устанавливаем login & pass        $_SESSION[»pass«]=$_POST[»pass«];        Header(«Location: protected.php»);    // еренаправляем на protected.php    }        mysql_close();}
protected.php
<?session_start(); //инициализирум механизм сесссий//начинаем проверку логина и пароля$db=mysql_connect(»host«, »login«, »password«);mysql_select_db(»db_name«, $db);$res=mysql_query(«SELECT * FROM users WHERE login=»«.$_SESSION[«login»].»«    AND pass=»«.$_SESSION[«pass»].»'«, $db);if(mysql_num_rows($res)!=1){    //такого пользователя нет    Header(»Location: login.php«);    //перенаправляем на login.php    }else{    //пользователь найден, можем выводить все что нам надо    echo »Текст закрытой страницы
Выход»;}mysql_close();?>
logout. php

Ну вот, и все. Надеюсь, эта статья кому-нибудь поможет.
google_ad_section_end-->

 

Интересное

Windows 2000 Pro: лучшая...
Когда я поинтересовался, может ли операционная система десятилетней давности типа Windows 98 по-прежнему быть жизнеспособным вариантом для использования на корпоративных настольных компьютерах,...
Подробнее...
Хакеры могут включить...
PandaLabs обнаружила Shark2 - утилиту для создания троянов, выложенную для продажи на нескольких интернет-форумах. Еe создатели уже выпустили несколько обновлений, поэтому фактически в сети...
Подробнее...
Java-приложение: заглянем...
Чтобы отладить приложение, можно поступить по-разному. Во-первых, можно воспользоваться штатным отладчиком из какого-либо программного пакета. Во-вторых, можно самостоятельно вычислить ошибку...
Подробнее...
Отправка по SMTP с...
1. Введение. Практически каждый, кто сталкивается с работой в инете на низком уровне при создании какой-либо почтовой программы, оповещалки, либо троя или кейлогера, напарывается на такой...
Подробнее...
Обзор вариантов прокладки...
Если кто-то пытается убедить вас, что создание сети — дело сложное, не верьте: на самом деле, оно очень сложное. Тем не менее, если не замахиваться сразу на масштаб промышленного предприятия,...
Подробнее...
Стратегии высокой надежности
Большинство предприятий среднего и большого бизнеса сегодня очень сильно зависят от своих компьютерных сетей. Многие предприятия также имеют приложения, которые являются ключевыми для задач...
Подробнее...
Службы Windows ХР
Важную роль в оптимизации производительности Windows XP может сыграть настройка системы служб. Управлять ими можно, вызвав оснастку управления службами через Пуск ->Выполнить-> services.msc....
Подробнее...
Реестр Windows
На смену ini-файлам, имеющим ряд концептуальных ограничений, еще в windows 3.1 было введено понятие реестра — регистрационной базы данных, хранящей различные настройки ОС и приложений. Изначально...
Подробнее...
Unix+ Samba + ftpd,...
Есть такая проблема: сложно найти ftpd, понимающий перекодировку имен файлов. Если хранить файлы на сервере в koi8, то ftpшник выдает винде крякозябры. Если хранить в CP1251, то ftp не передает...
Подробнее...
Несколько простых способов...
Задумывались ли вы когда-то о том, может ли ваш компьютер быть более быстрым? Мы рассмотрим несколько простых способов увеличить скорость работы, получив максимум производительности от своего...
Подробнее...