2013-11-25 87 views
0

我正在使用Codeigniter作爲應用程序並添加了Tank_Auth作爲身份驗證系統。銷燬與Codeigniter和Tank_Auth庫的會話

本地(XAMPP)的東西完美工作(登錄,註銷)。在服務器上,雖然我注意到一個錯誤,當我登錄時,我經歷了,當我註銷時,我被重定向到登錄頁面,當我馬上做同樣的事情時,我登錄,我在,我註銷..我是仍然在註銷不再工作。

我想知道這是否是cookie/session問題。

我的註銷功能是這樣的:

function logout() 
    { 
     $this->db->cache_delete_all(); 
     $this->tank_auth->logout(); 
     $this->session->sess_create(); 

     //$this->_show_message($this->lang->line('auth_message_logged_out')); 
       redirect('/auth/login/','refresh'); 

     //$this->_show_message($this->lang->line('auth_message_logged_out')); 

    } 

服務器verison和本地版本之間的唯一區別是htaccess的,我想知道,如果這有什麼與

我htaccess是

<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresByType image/jpg "access 1 week" 
ExpiresByType image/jpeg "access 1 week" 
ExpiresByType image/gif "access 1 week" 
ExpiresByType image/png "access 1 week" 
ExpiresByType text/css "access 1 week" 
ExpiresByType application/pdf "access 1 week" 
ExpiresByType text/x-javascript "access 1 week" 
ExpiresByType application/x-shockwave-flash "access 1 week" 
ExpiresByType image/x-icon "access 1 week" 
ExpiresDefault "access plus 1 year" 
</IfModule> 

<ifModule mod_gzip.c> 
mod_gzip_on Yes 
mod_gzip_dechunk Yes 
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ 
mod_gzip_item_include handler ^cgi-script$ 
mod_gzip_item_include mime ^text/.* 
mod_gzip_item_include mime ^application/x-javascript.* 
mod_gzip_item_exclude mime ^image/.* 
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* 
</ifModule> 

DirectoryIndex index.php 
RewriteEngine on 
RewriteBase /app/ 
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA] 
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css application/javascript 

任何想法?

感謝

編輯:問題解決

這是造成會話註銷問題ExpiresDefault "access plus 1 year" 刪除這條線的認證工作就像一個魅力後

回答

2

嘗試是這樣的:

function logout() 
{ 
    $this->delete_autologin(); 
    $this->tank_auth->logout(); 
    // See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line 
    $this->ci->session->set_userdata(array('user_id' => '', 'username' => '', 'status' => '')); 


     $this->ci->session->sess_destroy(); 
} 

注意:如果您的託管服務提供商禁用然後從.htaccess

+0

mod_gzip部分嘗試這種解決方案,還是同樣的行爲(高速緩存清理和瀏覽器重新啓動) – Rad

+0

我刪除htaccess的的mod_gzip的一部分,它的工作完美,什麼在mod_gzip模塊這部分可以導致這種行爲? – Rad

+1

mod_gzip是Apache的外部擴展模塊,它允許您在將文件發送給客戶端之前快速輕鬆地壓縮文件。這加快您的網站像瘋了一樣,你的主機提供商已禁用mod_gzip模塊,這就是爲什麼它導致問題 –