2013-02-26 4 views
0

я хава CGI страницу index.cgi и один шаблон формы входа в качественесколько экземпляров Singleton CGI объекта в Perl

index.cgi

use Singleton::CGI; 
use Singleton::Session; 

$q = new Singleton::CGI(); 
$session = new Singleton::Session(); 
$template = HTML::Template->new(filename => 'login.tmpl'); 

print $q->header; 
print $q->start_html("hello perl"); 
print $q; # printing hash of CGI Object. 
print $session; 
print $template->output; 
print $q->end_html; 


if($q->param('submit')){ 

print $q->header; 
print $q->start_html("hello user"); 
print $q; # printing hash of CGI Object. 
print $session; 
print $q->param('text'); 
print $q->end_html; 

} 

login.tmpl:

<form action="/" method="post"> 
    <input type="text" name="text"/> 
    <input type="submit" name="submit" value="submit"/> 
    </form> 

вот выход, когда я получаю index.cgi

CGI = HASH (0xbe0510)
SingletonSession = HASH (0x1e67ee60)

наряду с формой

дальше, когда я отправить форму, то CGI = HASH (0xe2ac500) alnog с формой входного значения. SingletonSession = HASH (0x115dc7a0)

согласно моему требованию, я должен получить только один сеанс.

Как я могу поддерживать только один объект запроса и сеанса через приложение?

ответ

3

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

+0

yes Я использовал сессионный объект для сохранения данных .. с помощью singlton Session Object. но получение нескольких экземпляров, рассматривающих его как новый процесс. – pavan

+1

Ваш комментарий очень трудно понять, но я думаю, вы просто повторили то, что вы уже сказали. Если это так, мой ответ все тот же. Нельзя делиться * переменными * между процессами. Можно делиться * данными *, но вы ничего не говорили или ничего не показывали о каких-либо данных. – ikegami

+0

http://www.debian-administration.org/, когда я вижу исходный код, разные формы имеют действия с URL-адресом '/', который является начальной страницей. bui он не создает новый объект cgi и session для каждого момента времени. Как это возможно, ссылка на исходный код http://code.ohloh.net/project?pid=Gfmu7b-JvKI&prevcid=1&browser=Default&did=yawns. repository.steve.org.uk & cid = Njw0CcmpMfQ & mp = 1 & ml = 1 & me = 1 & md = 1 & filterChecked = true – pavan