Ruby CGI 세션


CGI::Session은 사용자 및 CGI 환경에 대한 영구 세션 상태를 저장할 수 있습니다. 이렇게 하면 세션이 완료되면 데이터가 저장소에 기록되도록 해야 합니다. 데이터.

#!/usr/bin/ruby

require 'cgi'
require 'cgi/session'
cgi = CGI.new("html4")

sess = CGI::Session.new( cgi, "session_key" => "a_test",
                              "prefix" => "rubysess.")
lastaccess = sess["lastaccess"].to_s
sess["lastaccess"] = Time.now
if cgi['bgcolor'][0] =~ /[a-z]/
  sess["bgcolor"] = cgi['bgcolor']
end

cgi.out{
  cgi.html {
    cgi.body ("bgcolor" => sess["bgcolor"]){
      "The background of this page"    +
      "changes based on the 'bgcolor'" +
      "each user has in session."      +
      "Last access time: #{lastaccess}"
    }
  }
}

"/cgi-bin/test.cgi?bgcolor=red"에 접속하면 지정된 배경색의 페이지로 이동합니다.

세션 데이터는 서버의 임시 파일 디렉터리에 존재합니다. prefix 매개변수는 임시 파일의 접두어로 사용될 세션의 접두사를 지정합니다. 이렇게 하면 서버에 있는 다양한 세션 임시 파일을 쉽게 식별할 수 있습니다.


CGI::Session 클래스

CGI::Session은 사용자와 CGI 환경 간의 지속적인 상태를 유지합니다. 세션은 메모리나 하드 디스크에 있을 수 있습니다.

클래스 메서드

Ruby 클래스 클래스 CGI::Session은 세션을 생성하는 간단한 메서드를 제공합니다.

CGI::Session::new( cgi[, option])

새 CGI 세션을 활성화하고 해당 CGI::Session 개체를 반환합니다. 옵션은 선택적 해시일 수 있으며 다음 값 중 하나일 수 있습니다.

  • session_key: 세션을 저장할 키 이름 기본값은 _session_id입니다.

  • session_id: 고유한 세션 ID입니다.

  • new_session: 자동 생성: true인 경우 현재 세션에 대한 새 세션 ID를 만듭니다. false인 경우 session_id를 통해 기존 세션 ID를 사용합니다. 이 매개변수를 생략하면 기존 세션이 사용되며, 그렇지 않으면 새 세션이 생성됩니다.

  • database_manager: 세션을 저장하는 데 사용되는 클래스로 CGI::Session::FileStore 또는 CGI::Session::MemoryStore일 수 있습니다. 기본값은 FileStore입니다.

  • tmpdir: FileStore의 경우 세션에 대한 오류 저장 디렉터리입니다.

  • prefix: FileStore의 경우 세션 파일의 접두사입니다.

인스턴스화 방법

일련 번호방법 설명
1[ ]
주어진 키의 값을 반환합니다. 예시를 참조하세요.
2[ ]=
주어진 키의 값을 설정합니다. 예시를 참조하세요.
3delete
기본 데이터베이스 관리의 삭제 메소드를 호출합니다. FileStore의 경우 세션이 포함된 실제 파일을 삭제합니다. MemoryStore의 경우 메모리에서 세션 데이터를 제거합니다.
4update
기본 데이터베이스 관리의 업데이트 메소드를 호출합니다. FileStore의 경우 세션을 디스크에 씁니다. MemoryStore에는 영향을 미치지 않습니다.