• 2

請問會寫php的大大進來.....求救

ievson wrote:
小弟在寫php程式的...(恕刪)



首先要先搞懂 php 內 session 存活的方式
1. php 在建立 Session 的時候,會在 /tmp 建立一個文字檔案,該文字檔案就是 Session 的參數名稱及內容
2. 接著他會在瀏覽器內建立一個 Cookie,該 Cookie 內的內容就是 Session 的檔案名稱
3. 有了這兩個對應關係,瀏覽器就可以去 Cookie 內抓取檔名,然後對應到某位 User 的 Session內容

當了解這樣的生態環境的時候,妳要清除Session 的內容最簡單的方式就是使用 php 的函示去清除
或是直接殺掉 Cookie,也可以把瀏覽器全部關閉,這樣 Cookie 就會消失,Session 也就跟著對應不到而消失

當然也有不用 Cookie 的方式,例如指定 *.php?SSID=xxxxxxx 的方式
想知道更多,建議你多翻翻書,多爬爬文章,多看看別人寫的程式
若要讓session隨瀏覽器生滅
請把php.ini裡面的session.use_cookies設為0
否則session會存在cookies裡
不過這時session的傳送得用post或get

而且印象中session真正要在server端清除要用session_destroy()
不然就算瀏覽器關閉其實session的資料都還在
只是你有用cookies瀏覽器會自動幫你輸入session ID
而若把cookies關掉
就變成你要自己輸入session ID (用post或get) 才能對應到
所以沒有輸入之前的session ID就不能讀出session的資料

因此我以前的作法把use_cookies關掉
然後設定session.cache_expire (session存活時間)
之後每次頁面都把session ID存到下一個存取頁面的連結中
例如本頁面中有超連結需要用到session
就設href="example.php?SESSION_ID=<存下來的sesseion ID>"
所以當使用者把瀏覽器關掉後
他不知道之前使用的session ID
也就沒辦法存取之前的資料
我也有做一個登出頁面把session destroy

上面的例子是用get的方式
使用者如果把整串連結copy下來還是能夠存取session啦
只是一般人不會這麼無聊
要不然等到session到期也會自動刪除
我個人是比較喜歡用post的方式
如以一來使用者除非去看原始檔
要不然是無法知道session ID的
不過缺點就是只能用buttom送form的方式開啟頁面
不能用超連結的方式

希望你看得懂囉~~
還有google大神很好用
我手邊是還有PHP聖經啦

SStar wrote:
若要讓session隨瀏覽器生滅
請把php.ini裡面的session.use_cookies設為0
否則session會存在cookies裡


使用cookie式的session的時候,那個cookie本來就是隨瀏覽器生滅,所以session也就隨瀏覽器生滅。

反倒是用參數傳遞式的session,即使瀏覽器關掉,只要還知道網址(例如加入書籤),那直接連就有可能(但也不一定)還讀得到session。這種作法比較麻煩,而且相對比較不安全,一般會這樣用,是為了相容於不支援cookie的環境。
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?