Опубликован: 24.12.2006 | Уровень: для всех | Доступ: свободно
Урок 13:

Аутентификация пользователей

< Урок 12 || Урок 13: 123456 || Урок 14 >

Создание файла application.cfm (только пользователям ColdFusion)

Одной из функций серверной модели поведения Log In User (Регистрация пользователя) в случае успешного доступа является создание переменной сессии. Проблема заключается в том, что по умолчанию область видимости сессии отключена, а, следовательно, страница доступа не будет работать. Для активации управления сессиями в приложении ColdFusion требуется просто создать новый файл ( application.cfm ) и ввести в него единственную строку кода.

  1. Создайте новую страницу. В режиме Code (Код) удалите со страницы весь код, в том числе теги HTML, XML и прочие.

    Файл application.cfm не является простой веб-страницей, но при создании он должен быть пустым.

  2. В первой строке введите следующий код:
    <cfapplication sessionmanagement="yes" setclientcookies="yes" 				
    name="newland_tours" sessiontimeout="#CreateTimeSpan(0, 0, 20, 0)#">

    Тег <cfapplication> эффективно создает приложение и обеспечивает его работу. В нем содержится несколько атрибутов, многие из которых не-обязательны. Единственным обязательным атрибутом является name, значением которого может быть любое имя, присвоенное приложению. Остальные атрибуты, присутствующие в приведенном коде, активируют управление сессиями, позволяют создавать файлы cookie и задают время окончания сессии.

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

  3. Сохраните файл application.cfm , закройте и загрузите на сервер.

    После этого можно тестировать созданное приложение. Как говорилось выше, рекомендуется проверить реакции приложения на различные ошибки в заполнении формы.

Активация управления сессиями (только пользователям PHP с Windows)

Когда PHP устанавливается с настройками по умолчанию, управление сессиями включено. Когда код PHP действительно начинает использовать сессии, он сохраняет информацию о производимых посетителем операциях в текстовом файле. Этот текстовый файл устанавливается во время установки PHP или, по крайней мере, должен. К сожалению, в некоторых версиях PHP для Windows по умолчанию присутствует неправильный путь к этому файлу. В результате появляются неприятные сообщения об ошибках (см. рис. вверху следующей страницы).

Если при тестировании страницы login.php сообщение об ошибке не появляется, значит, все в порядке и следует перейти к разделу "Ограничение доступа на страницы".

Если присмотреться к сообщению об ошибке более внимательно, станет очевидно, что страница пытается открыть файл с неправильным путем, – что-то вроде /tmp\sess_sess_6002c7a1f3cba0838a25d6e86e596b15, 0_RDWR). Путь необычен тем, что начинается с косой черты ( / ), в то время как для записи пути для Windows применяется символ обратной косой черты ( \ ). Скорее всего, эта ошибка происходит из PHP для Unix, поскольку все пути в Unix-системах (в том числе, и в Mac OS X) обозначаются косыми чертами. Но хуже всего то, что папки, поиск которой проводит сценарий ( tmp ), не существует.

Исправить эту проблему относительно просто. Для этого требуется выполнить два шага:

  • изменить .ini -файл, в котором указан путь, используемый PHP для подключения к каталогу сессии;
  • создать каталог, на который будет указывать .ini -файл.
  1. Найдите файл, расположенный по адресу C:\windows\php.ini . Дважды щелкните на нем, чтобы открыть его в программе NotePad (Блокнот).

    В файле содержится множество указаний по настройке PHP. Как известно, в Unix наиболее распространенным интерфейсом является не диалоговое окно или Мастер, а текстовый файл.

  2. При помощи функции поиска (при выполнении команд Edit\Find [Правка\Найти]) найдите надпись session.save_path . В той же строке найдите путь, определяющий расположение каталога для сохранения данных.

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

    В нужной строке после разыскиваемого экземпляра указан путь. Путь может отличаться от указанного на рисунке. Тем не менее, проблема заключается именно в нем.

  3. Измените путь так, чтобы он соответствовал указанной записи:
    C:\php-[номер_версии]-Win32\temp\

    Этот адрес следует ввести без изменений, но вместо [номер_версии] нужно задать номер используемой версии PHP.

    Если версия PHP неизвестна, следует перейти в каталог C:\ и посмотреть имя папки, в которой хранятся файлы PHP. Как правило, в имени папки содержится и номер версии.


  4. Сохраните и закройте файл php.ini.

    Информация о месте хранения данных сессии будет обновлена.

  5. При помощи значка Apache, расположенного на панели задач, остановите и снова запустите Apache.

    При этом информация из файла php.ini. будет перезагружена, и новые данные вступят в силу.


  6. Откройте окно Windows Explorer (Проводник) (или другой менеджер файлов), перейдите в папку C:\php-[номер_версии]-Win32\ и убедитесь, что внутри нее содержится папка под названием temp.

    Если такой папки не существует, следует ее создать.

< Урок 12 || Урок 13: 123456 || Урок 14 >
Юрий Макушин
Юрий Макушин
Россия, Москва, РЭА им. Плеханова, 2004