Ruby On Rails in UA Icon_home Главная Add to bookmarks Translate translate Profile Войти
Регистрация Форум Блоги Пользователи Ресурсы Список джемов      Поиск   

Ruby On Rails in UA/Вопросы по программированию на ROR/Ruby CGI - CGI::Session

2008-06-16 17:50:34 Ответить  
Dracula
Dracula
Адрес:
Сообщений: 23
Регистр: 2008-05-31
его блог 0 сообщ.
Ruby CGI - CGI::Session
Пример работы с сессиями!

--------------------------
sessclass.rb
--------------------------
#!c:/ruby/bin/ruby.exe

$kcode = "windows-1251"

require 'cgi'
require 'cgi/session'

class CGI::Session
# create new session
def self.create(request, options = {})
session = self.read(request, options)
session.delete if session
options['new_session'] = true
CGI::Session.new(request, options)
end

# read session if exist
def self.read(request, options = {})
options['new_session'] = false
begin
CGI::Session.new(request, options)
rescue ArgumentError # if no old session
end
end
end

class CGI
attr_accessor :session
alias :initialize_orginal :initialize

def initialize(*args)
initialize_orginal(*args)
@session = CGI::Session.read(self)
end

def create_session
@session = CGI::Session.create(self)
end

def delete_session
@session.delete if @session
@session = nil
end

def session_id
@session ? @session.session_id : ''
end
end
, , , ,
2008-06-16 17:54:13 Ответить  
Dracula
Dracula
Адрес:
Сообщений: 23
Регистр: 2008-05-31
его блог 0 сообщ.
RE: Ruby CGI - CGI::Session
---------------------------
index.rb
---------------------------
#!c:/ruby/bin/ruby.exe

$kcode = "windows-1251"

require 'cgi'
require 'cgi/session'
require 'sessclass.rb'

cgi = CGI.new
message = []
message << "прочитана сессия. ID: #{cgi.session_id}" if cgi.session

if cgi['session'] == 'create'
cgi.create_session
message << "создана сессия. ID: #{cgi.session_id}"
cgi.session['counter'] = ""
elsif cgi['session'] == 'delete'
message << "удалена сессия. ID: #{cgi.session_id}"
cgi.delete_session
elsif cgi.session
cgi.session['counter'] << "+"
message << "счетчик: #{cgi.session['counter']}"
else
message << "у вас нет сессии."
end


puts cgi.header
puts %Q|*html**body*|
puts %Q|*a href="?"*обновить*/a*|
puts %Q|*a href="?session=create"*создать*/a*|
puts %Q|*a href="?session=delete"*удалить*/a*|
puts %Q|*pre style="border: solid 1px #888; padding: 1em"*#{message.join("\n")}*/pre*|
puts %Q|*/body**/html*|
# звездочки(*) замените на теги (>)
, , , ,
Ключевые слова:
Гости: 87 Онлайн: 0
Rambler's Top100
О проекте по всем вопросам обращайтесь на support
Rubyclub.com.ua Copyright © 2007 - 2008