→ starjou :session 是陣列,你可以用 print_r 來觀察 07/20 16:25
: 推 allanshen :用SESSION也可以,這就是在server端了 07/20 00:35
YES,這個也可以
話說如果有看過我系列問題的板友大概知道
最近我在做 CakePHP & PhpBB2 的整合
本來我就是想用 session,可是失敗了..
這樣說好了
如果是從頭撰寫一個自己完全了解的程式,session 應該是很好用的
但我面臨的,是同事寫好的 CakePHP 架構程式
以及網路上抓來已經很成熟的 PhpBB2
兩邊都已經完整了,各有各的 session
那請問 session 的觀念要如何整合呢?
又 PhpBB2 上面關於帳號,有一個全域變數 $userdata
我們在 CakePHP 上面是 $User 好了..
錯開的話那就好命..
如果沒錯開呢?又可能全部的變數都錯開嗎?
如果是有 VC++ & DLL/COM & BCB 等程式聯結經驗的工程師就會知道
一個程式可以單獨運作
和寫成多人單機版被 multithread 運作,有些重點是要注意的
就是你的全域變數生命週期到底是怎麼計算的?會不會互相洗來洗去?
要不要設同步物件?
這簡直是一樣的問題
所以...我敗了
放棄用 session *_*
什麼是 session 呢?
Client 端要求執行 Server 端程式時 (在這裏字眼或許改成 瀏覽/網頁)
帶入一個 ID,足以代表 Client 端
只要每次執行時都帶入這個 ID,就是同一個 Client 在執行
要有這種觀念,所謂的全域變數才不會打架
(那我有另一個問題,可不可以有靜態變數的觀念? XD
也就是輕易的計數現在有多少人瀏覽這個網頁
這個網頁被瀏覽幾次等等問題;這要有一個變數跨越所有 session)
在 PhpBB2 裏,它有所謂的 session id,是自己產生的
用該 ID 去取用 DB
在 CakePHP 端也一樣有自己維護的 session id
好吧,我收回那句話一半
session 還是很好用,只是我們自己維護
以 session 造成的 "資料存放在 Server 端"這句話
我們是自己做的 *_*
全部自己做當然就清楚狀況
那一個變數到底是每個 session 各自不同,或者跨 session 共同使用
我們也就都清清楚楚了
舉例來說,PhpBB2 裏,想計算線上人數或瀏覽次數
你只要知道它在資料庫的哪裏就好了
如果它是每個 session 各一份,那就是各自不同
如果它是每個 session 都看到同一份,那就是跨 session (比如 board config)
我的確花了很多時間學習 PhpBB2,也得到一些較完整的概念
不過我還是想問:那 php 這個語言本身,怎麼實作 session & 產生 ID
session ID 是 Apache 會產生它,還是 php 產生它?
;;
剛才試了 session,搞懂一些觀念
1.從 php.ini 裏面,有規定 session 的行為
比如,session 檔將存在哪裏
2.session 檔基本上就類似於 serialize
echo serialize($_SESSION) 看起來實在是差不多,但最精確的
echo session_encode 就是一模一樣,將這個字串存起來,反向 call
session_decode($store) 就可以把 session 資料灌回
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.179.152
※ 編輯: HuangJC 來自: 61.59.179.152 (07/20 14:18)