所以我使用codeigniter作爲我們的內部Intranet。Codeigniter會話掛起
通常在做數據庫選擇,更新,刪除等操作時,我使用ajax,並使用jquery更新頁面而不重定向。
我需要實際提交表單而不是依賴ajax。數據庫操作完成後,我使用codeigniters會話設置一些會話數據,然後將用戶重定向到概覽頁面,在此頁面將從會話中檢索信息並將其顯示爲「成功」消息。
我可以設置數據就好了:
$this->session->set_userdata('msg_title', 'Success');
$this->session->set_userdata('msg_content', 'Some success message here');
我也知道我應該使用flashdata
像這樣的例子,但似乎是一個錯誤。
當我使用flashdata設置數據,或者當我嘗試使用unset_userdata()
取消設置userdata時,瀏覽器掛起。
我知道它的這兩個功能,因爲當我刪除set_flashdata()
或unset_userdata()
行時,腳本工作正常。
沒有錯誤,錯誤日誌中沒有條目,控制檯日誌中沒有任何條目。同一臺服務器上的其他網站(子域名)工作正常。它只有當我使用這些功能時,它似乎掛起瀏覽器。
我使用Chrome 32.0.1700.107,我也在IE8中測試過它,它遇到了同樣的問題。
我已經發布的下面的代碼的相關章節:
body.php - 我的視圖
<?php if($this->session->userdata('msg_reply')): ?>
<p class="big-message <?php echo $this->session->userdata('msg_colour_class'); ?>">
<strong><?php echo $this->session->userdata('msg_title'); ?></strong><br>
<?php echo $this->session->userdata('msg_message'); ?></strong>
</p>
<?php
$this->session->unset_userdata('msg_reply');
$this->session->unset_userdata('msg_colour_class');
$this->session->unset_userdata('msg_title');
$this->session->unset_userdata('msg_message');
?>
<?php endif; ?>
我的控制器
$this->session->set_userdata(array(
'msg_reply' => true,
'msg_colour_class' => 'green-gradient',
'msg_title' => 'Contacts Updated',
'msg_message' => 'You have successfully updated ' . $i . ' out of ' . $t . ' contacts.'
));
redirect('my_department/student_absence');
摘要:
- 我知道我應該使用
set_flashdata()
,不過這個功能懸掛在瀏覽器 set_userdata()
工作正常,並在會議unset_userdata()
創建值掛瀏覽器- 沒有錯誤消息的任何地方。
- 刪除
set_flashdata()
或unset_userdata()
的實例可以解決問題,但也會阻止我能夠設置flashdata或刪除正常的會話數據。
編輯
我自動載入會議庫,它可爲每個頁面。 另外,試圖取消設置控制器中的會話數據會掛起瀏覽器。
在等待頁面完成加載後,我發現unset_userdata()
正在工作,但其花費時間去做任何事情。
我已經運行了3次重載腳本,每次都需要2分鐘才能重新載入頁面。
對不起,我忘了在帖子中提到這一點,我已經自動加載會話庫,因爲每個頁面都依賴會話來驗證用戶(它是一個封閉的內部敏感信息內部網)。 –
好吧,它似乎正在工作,但需要2分鐘才能刪除會話數據。我已經使用Chrome開發人員工具檢查了這一點,然後從提交按鈕到完成加載的頁面,這需要2分鐘。除去'unset_userdata()'函數,這些頁面只需要3秒鐘。 –
即使會話庫已經加載,$這沒有什麼可指向上面提到的,我很驚訝你沒有得到一個錯誤。無論如何,至於時間問題,我建議首先在控制器中管理會話。你嘗試過這條路線嗎? – Zarathuztra