2011-02-09 64 views
3

我正在爲我的應用程序&使用Recess Framework會話處理困擾。我需要在會話中存儲一些值..我可以創建會話和會話ID。但是,只要我導航到另一個頁面,我不能夠回收他們!人們如何管理你的會話? PHP會話處理簡單而直接,但我根本無法做到這一點!使用Recess進行會話處理!

在我家的控制器,我有:

/* !Route GET,/*/ 
function index() { 
    . 
    . 
    session_start(); 
    $_SESSION['val'] = 'SomeValue'; 
    . 
    . 
} 

我的視圖顯示另一種形式,當用戶提交,我需要訪問會話VAL以及..所以我試圖讓值回爲:

/* !Route GET, /check */ 
function check() { 
    if(isset($_SESSION['val'])){ 
     . 
     . 
     . 
    }  
} 

但不幸的是,我不進入,如果塊..我沒能看到我的錯誤是 我試圖顯示會話使用的session_id(),以及在檢查其空白值()方法。

我還注意到,我一直創建一個新的會話,session_id是相同的!在PHP中是這樣嗎?據我讀,他們應該是不同的!

回答

1

在課間框架的論壇,許多小徑和討論與其他社區成員後,這裏是我得到了它的工作:

我把在session_start( )recess-conf.php和一切似乎現在工作正常!

0

在我的使用功能,用於啓動這樣一個會議認爲其最好的:)

http://snipplr.com/view/41338/start-a-secure-session/

function startSession($session_name) { 
    session_name($session_name); 
    $ok = @session_start(); 
    if(!$ok){ 
     session_regenerate_id(true); // replace the Session ID 
     session_start(); // restart the session (since previous start failed) 
    } 
} 

在您的例子在session_start的第二次執行(;是必須的。

/* !Route GET, /check */ 
function check() { 
    session_start(); 
    if(isset($_SESSION['val'])){ 
     . 
     . 
     . 
    }  
} 

還是我的例子

function startSession($session_name) { 
    session_name($session_name); 
    $ok = @session_start(); 
    if(!$ok){ 
     session_regenerate_id(true); // replace the Session ID 
     session_start(); // restart the session (since previous start failed) 
    } 
} 

/* !Route GET,/*/ 
function index() { 
    . 
    . 
    startSession('SID'); // SID is only for example you can use what you want 
    . 
    . 
    $_SESSION['val'] = 'SomeValue'; 
    . 
    . 
} 


/* !Route GET, /check */ 
function check() { 
     . 
     . 
     . 
    startSession('SID'); // SID is only for example you can use what you want 
     . 
     . 
     . 
    if(isset($_SESSION['val'])){ 
     . 
     . 
     . 
    }  
} 
+0

你爲什麼在check()中調用startSession()?我試圖訪問我在index()中創建的會話或訪問index.php ..我很抱歉地說..我沒有得到你的邏輯,你能解釋一下嗎? – 2011-02-09 16:12:02