[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / PERL /

Работа с сессиями в perl

Механизм сессий предоставляет нам замечательную возможность хранения каких-либо данных между сеансами работы пользователя. Кроме того, на основе сессий возможно организовать идентификацию пользователей.

Хранение данных в сессиях более надёжно как с точки зрения безопасности, так и с точки зрения правильности работы, чем хранение в куках (cookies). Почему? Для работы с сессией от пользователя требуется получить только идентификатор сессии, все данные хранятся на сервере и выбираются по идентификатору. В случае cookies браузер пользователя должен всё «носить с собой» и передавать каждый раз, когда это требуется. К тому же, пользователь может вообще запретить приём кук.

Возможности для работы с сессиями есть во многих распространённых языках - Perl, PHP. По-моему, Java тоже предоставляет такую возможность, но с ней я никогда не общался, так что точно сказать не могу. Мне привычнее Perl, так что опираться я буду на него.

В языке Perl работа с сессиями реализуется с помощью модуля CGI::Session, который можно найти на CPAN Search. Этот модуль предоставляет несколько способов хранения данных: файлы (CGI::Session::File), Berkeley DB (CGI::Session::DB_File) и MySQL (CGI::Session::MySQL). Я буду говорить о случае с хранением в файлах.

Как обычно это происходит в Perl, There's More Than One Way To Do It. Работать с CGI::Session можно двумя способами:


·                                 OO-style;

·                                 связанные хэши.


Рассмотрим оба способа. В первом случае создаётся объект $session:


my $session = new CGI::Session::File($sid, { Directory => "sessions" });


Параметр Directory задаёт каталог на диске, куда будут помещаться файлы с данными сессии; $sid - идентификатор сессии.

Второй способ (связанные хэши) выглядит следующим образом:


tie %session, "CGI::Session::File", $sid, { Directory => "sessions" };


Теперь данные сессии будут доступны в хэше %session в виде пар «ключ/значение».

Идентификатор сессии можно передавать либо через куки, либо как параметр при вызове скрипта.


use CGI qw/:standard/;

use CGI::Session::File;

my $sid = param('sid') || cookie('sid') || undef;


Если значение $sid оказывается неопределённым, то есть идентификатор не был передан, то мы можем сгенерировать его средствами того же CGI::Session:


my $sid = $session->id; # OO-style

my $sid = $session{_session_id}; # tied hash


Помещение данных в сессию и извлечение их делается следующим образом:

# Внесём в сессию новый параметр

$session->param("param_name", $param_value); # OO-style

$session{param_name} = $param_value; # tied hash

# Теперь извлечём его значение my $new_param_value = $session->param("param_name"); # OO-style

my $new_param_value = $session{param_name}; # tied hash

Как видите, всё достаточно просто. Конечно, авторизацию пользователей через сессии я бы делать не стал, но идентификация без проверок паролей, логинов и прочей секурной информации, хранение не требующих принятия особых мер безопасности данных производится вполне нормально.

Вот
пример идентификации пользователя:


#!/usr/bin/perl -w

use CGI qw/:standard/;

use CGI::Session::File;

use strict;

my %session;

my $sid = param('SID') || cookie('SID') || undef;

tie %session, "CGI::Session::File", $sid, { Directory => "sess" };

unless (defined $sid) {

$sid = $session{_session_id};

my $user_name = "Anonymous";

} else {

my $user_name = $session{user_name};

}

print header,

start_html,

h1("Hello, $user_name!"),

end_html;

untie %session;




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / PERL /

CGI интерфейс
24-10-2009   

Большое количество World Wide Web приложений основано на использовании внешних программ, управляемых Web сервером... подробнее

Кол. просмотров: общее - 4903 сегодня - 0

Upload File
24-10-2009   
Кол. просмотров: общее - 4000 сегодня - 0

Программирование для Веб: Загрузка файлов на сервер и посылка e-mail с вложениями
24-10-2009   

Одним из популярнейших вопросов во всевозможных форумах является вопрос «Как загрузить файл на сервер?». А ведь на самом деле это не так сложно, как кажется на первый взгляд. И чтобы не было совсем легко – пусть скрипт, который приведен ниже еще и посылает этот файл по почте, в виде вложения... подробнее

Кол. просмотров: общее - 4400 сегодня - 0

Защита WWW-сценариев от несанкционированного копирования и модификации
24-10-2009   

В статье рассматривается один из основных подходов к генерации динамического контента в среде веб-приложений, а именно использование веб-сценариев и CGI, и применительно к ним, методы защиты исходных текстов от несанкционированного копирования и модификации... подробнее

Кол. просмотров: общее - 4028 сегодня - 0

Как защитить мою программу, чтобы никто не смог её прочитать?
20-10-2009   

Disclaimer: все приведённые примеры предназначены для демонстрации принципов, а вовсе не являются готовыми к использованию решениями... подробнее

Кол. просмотров: общее - 4114 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects