最近剛開始試著用的Drupal架網站,裡面需要加一個記錄使用者活動的功能。
遇到的問題是,如果今天我登入進入Drupal網站,沒登出就關閉瀏覽器,下一次(也許是第二天),再連到網站時,網站會回到登入後的畫面。
到網路上查了一些文章,發現似乎是Session.cookie造成的,一個把session id記到cookie的機制。
能夠了解那是一個方便人不用再重新登入的作法,不過如果是在公用電腦上面,前一個使用者習慣不好,直接關了瀏覽器,下一個人用電腦的人,就可以"自動"登入前一個人的帳號。對於使用者的隱私保護似乎不太足夠,而後台的記錄檔也會不正確。
簡單來說,就是怕下一個人"惡搞"上一個人。
爬過文章都沒看到解決的文章(英文不好可能也是原因),想請教的是...
●有沒有方式是可改成只用session記錄登入狀態
(這樣比較符合一般人「看完網頁關瀏覽器就夠了」的操作習慣)
●或是能夠縮短記錄的存活時間
(退而求其次,上一個人關瀏覽器一段時間,記錄就沒了,要重新登入)
--
找文章曾經找到一篇去修改「sites/default/settings.php」裡面的
ini_set('session.cookie_lifetime', 2000000);
我把數字改小,變成...
ini_set('session.cookie_lifetime', 200);
但是一改完存檔,重新整理的結果,是畫面一片白。(看了"網頁原始檔"真的除了基本html標籤,什麼東西也沒有)
重新開apache,重開電腦也沒有用。(我是winXP,灌Appserv)
結果是檔案全砍,順便從5.0升到5.1... (這應該不算好事)
Re: 請教關於登入的設定(停用session.cookie)
automatic logout 模組你可以試看看,他有個功能如下所述:
Browser refresh delta:0
The length of time, in seconds, after a timeout that a browser refresh is forced. Setting this to 0 (zero) disables the browser refresh facility. Using this facility will force a browser refresh and expire the session thus sending the user『s browser to the homepage, in a logged out state.
這個設定應該可以解決你的問題.
解決了,謝謝!!
到原文官網找到這個模組,安裝後果然在關瀏覽器的時候自動登出。
順便附上模組的連結,給遇到同樣問題的人。
模組名稱: Automated Logout 模組的Project網頁
支援版本: 5.x, 4.7.x
最後再次謝謝 lee 大大的解答!!
Re:
各位好!
請問一下,Automated Logout 要如何設定呢?
我的設定是
啟用 Enable module (Uncheck this and save settings to disable auto logout)
其它都沒改
但都用不起來說 (關瀏覽器的時候自動登出)
我的機器是 win server2003 + drupal5.1
謝謝大家的解答
Re: 請教關於登入的設定(停用session.cookie)
大家好!
請問有人有使用過 Automated Logout 嗎
您們在使用這個模組時,是如何設定的呢?
我的設定是
啟用 Enable module (Uncheck this and save settings to disable auto logout)
其它都沒改
但都用不起來說 (關瀏覽器的時候自動登出)
我的機器是 win server2003 + drupal5.1
一直想用這個模組,所以再問大家一次,抱歉了
先謝謝大家的解答
Re: 請教關於登入的設定(停用session.cookie)
可能沒設定好,尤其是 policy 的部份,有沒有看過模組附的 install/readme.txt ?
Re:
其實... 這個模組似乎只有自動登出的功能。
也就是說你閒置不動多久它就把你"踢掉",那也就是這個討論區原來發表者所希望的。
「退而求其次,上一個人關瀏覽器一段時間,記錄就沒了,要重新登入」
至於想要一關瀏灠器就直接被登出。應該是去改 Drupal 的設定,在說明怎麼改之前,先說一些 PHP 程式的東西,也許是你不太清楚的部分。如果你很痛恨程式執行的過程,以下這段請跳過。
存網頁資料,因為安全性的考量,後來很多人開始改用 session 來取代傳統的 cookie。
不同的瀏灠器開啟的 session 會有不同的 id 來作識別不同的 session,這個 id 是記在哪裡?? 其實是在 cookie 裡面。
Drupal 的 cookie 是共用的,也就是說兩個視窗用同一個帳號開啟 Drupal ,一個登出... 另一個也會被登出。
因為 cookie 記錄中的 session id 無效了(或是cookie被刪掉)。
所以要一關瀏灠器就登出。應該是去修改, sites/default/setting.php。 強烈建議先備份,改不好整個站就掛了。
找到如下的程式碼:
/**
* PHP settings:
*
* To see what PHP settings are possible, including whether they can
* be set at runtime (ie., when ini_set() occurs), read the PHP
* documentation at http://www.php.net/manual/en/ini.php#ini.list
* and take a look at the .htaccess file to see which non-runtime
* settings are used there. Settings defined here should not be
* duplicated there so as to avoid conflict issues.
*/
ini_set('arg_separator.output', '&');
ini_set('magic_quotes_runtime', 0);
ini_set('magic_quotes_sybase', 0);
ini_set('session.cache_expire', 200000);
ini_set('session.cache_limiter', 'none');
ini_set('session.cookie_lifetime', 2000000);
ini_set('session.gc_maxlifetime', 200000);
ini_set('session.save_handler', 'user');
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid', 0);
ini_set('url_rewriter.tags', '');
把裡session.cookie_lifetime 改成 0,就是關瀏灠器後 cookie 就"過期",也就不能在下一次開瀏灠器的時候被自動登入了。
附記1:
這個方法我試成功後.... 又過了好一段時間。所以記得不是很清楚,所以再次強烈建議先備份 setting.php
附記2:
其實原po ddt 是我的一個朋友,所以我知道他說的意思是什麼。
(謎之聲: 那就是你本人吧!)
痾... 好吧!! 這個帳號現在沒有在用了... 如果站長大人不覺得麻煩,可以把他給砍了。免得占用寶貴的資料庫空間。
附記3:
原來為什麼改 session.cookie_lifetime 會失敗,那是更久之前的事情了,我真的想不起來。
不過那時候用的 appserv 太舊,中文化之後網站也會掛掉。= =a
後來換了新一點的版本就正常了。
Re: 請教關於登入的設定(停用session.cookie)
您好厲害
真是詳盡的回答!
謝謝您了,有人討論真好!
Re: 請教關於登入的設定(停用session.cookie)
推謎之聲 :)
解答好,收藏起來!
Re: 請教關於登入的設定(停用session.cookie)
詢問如果想於登入的部份要帶出uid的session的話…我要改的是user的模組嘛?它的登入session是寫在裡面的嘛?
心中常存善解、包容、感思、知足、惜福 (靜思語錄)
Re: 請教關於登入的設定(停用session.cookie)
在user模組中的user.module裡加入了以下的方式想印出session
結果是array ( )空值
<?php
print_r($_SESSION);
?>
也試過於drupal同一資料夾下另放一頁測來印session~的值出來
結果也為空
心中常存善解、包容、感思、知足、惜福 (靜思語錄)