2011-03-20 97 views
1

您好我一直在使用坦克認證的CI,我認爲這是真棒,我只是想知道是否有一種方法來改變它,所以當用戶刷新登錄頁面登錄錯誤後),「確認表單重新提交」彈出窗口不顯示。我一直在閱讀後重定向get方法,但我不想搞亂坦克認證。 ps - im pretty noobish如何刪除'確認表單重新提交'坦克認證

回答

0

此'確認表單重新提交'來自您的網絡瀏覽器,而不是來自Tank Auth。 前段時間有人編碼的網絡瀏覽器意識到重新發布是一個大問題,所以他們發出警告,停止雙重發布等。

我可以想出2種方法來避免它。

1)將登錄'post'設爲'get'。 這是一個壞主意。因爲您的密碼在查詢字符串中

2)在auth控制器中,在登錄失敗時重定向到登錄表單的錯誤顯示版本,而不是再次加載登錄表單視圖。

基本上你會找到一種方法來通過查詢字符串或會話將錯誤消息傳遞給登錄表單。重定向到該頁面。坦克驗證使用語言鍵來處理錯誤很容易。

我只是試過它作爲查詢字符串..似乎工作正常,但我的坦克auth是相當大的修改。

我在那裏說://fail

redirect('auth/login/'.$errors['login']); 

這需要通過罐權威性產生登錄錯​​誤的關鍵,並將其傳遞迴http://yoursite/auth/login作爲查詢參數的部分之後添加到了controllers/auth.php

然後在登錄功能的頂部,我把這個:

function login($error = ''){ 
    if ($error != '') { 
     $data['errors']['login'] = $this->lang->line($error); 
     $this->load->view('auth/login_form', $data); 
    } 

這個代碼抓起參數如果有..然後獲取語言文件的相應行,然後加載登錄表單。

注意這隻會處理'登錄'錯誤。你將需要傳遞更多的查詢參數來處理驗證錯誤等事情。

//編輯 我想我會嘗試會議的方式..和它更整潔。

這正好在現場//fail

$this->session->set_flashdata('login_error', $this->lang->line($errors['login'])); 
redirect('/auth/login'); 

,並像這樣進去的意見/ auth /中login_form.php代替form_errors在哪裏。

<? if ($this->session->flashdata('login_error') != '') { 
    echo '<p style="color:#f00;">'.$this->session->flashdata('login_error').'</p>'; 
} ?>