2008-06-30: 修改為不限 blogspot 專用,請參考新版 bookmarklet。
官方說明的具體步驟中,首先的 <body onLoad="javascript pageTracker._setVar('test_value');">
跟後面「設定篩選器」看起來似乎沒關聯:
請注意「篩選器模式」的值是怪異的「無報告」,換成英文版一看:
封存
2008-06-30: 修改為不限 blogspot 專用,請參考新版 bookmarklet。
官方說明的具體步驟中,首先的 <body onLoad="javascript pageTracker._setVar('test_value');">
跟後面「設定篩選器」看起來似乎沒關聯:
請注意「篩選器模式」的值是怪異的「無報告」,換成英文版一看:
變成 test_value 了 …… 跟 pageTracker._setVar('test_value');
設的值吻合 —— 所以是翻譯沒做好啊。
實際上 pageTracker._setVar('test_value');
會在電腦上儲存一個 __utmv=123456789.test_value 的 cookie,其中 123456789 每個網站都不一樣。一旦訪客電腦裡有這個 cookie,在 Google Analytics 的「訪客 - 使用者定義」就會出現:
然後設定「篩選器模式」為 test_value,該報告就會被排除,不再出現。
如此一來,具體流程「建立會設定 cookie 的網頁 → 造訪該網頁以設定 cookie → 設定篩選器排除具有該 cookie 的電腦」應該很清楚了。
還沒完,blogspot 使用者還有問題:要在哪建立新網頁?
新網頁需要在 body onLoad 動手腳,而且不能讓一般訪客看到(有看到就會被下 cookie 而遭排除)—— 很麻煩。
所以我想改用 bookmarklet 的方式,內容就是找到 pageTracker
,請他 ._setVar
即可。原始碼拆開如下:
javascript: if(pageTracker) { var v=prompt(%22請輸入要用於「篩選器模式」的字串:%22,%22test_value%22); if(v!=null) { pageTracker._setVar(v);alert(%22已設定 cookie: %22+v); } } void 1
將 bookmarklet 加進書籤便可使用 → 設定排除用的 Cookie (Google Analytics)
這樣就完成了,我測了兩天,流量有正確尷尬下去,所以應該是有效的。
CodeIgniter 社群的 Session library 數量很多,而且越來越多 …… 之前我選用 OB Session 不料沒多久作者便離開 CI 轉乘 Kohana,害我現在想換 lib 又不曉得要換哪支了。
session | API | cookie 內容 | 資料庫 | 已應用於 | |
---|---|---|---|---|---|
CI_session | CI | 所有資料 | 選用 | ||
DB Session | CI | 獨立 (1.5) | SID | 必須 | auth, FreakAuth |
OB Session | CI | 取代 (1.5) | SID (db) | 選用 | |
NG Session | CI | 取代 (1.6) | SID (db) | 選用 | |
PHPSession | PHP | 獨立 (無) | SID | ||
Native Session | PHP | 取代 (1.5) | SID | sentry | |
RA session | PHP | 獨立 (1.5) | SID | RA Auth | |
KNDB Session | PHP | 取代 (1.6) | SID | 選用 |
CI_session 會建立自己的 session 資料(而非使用 PHP 既有的 $_SESSION 變數),瀏覽器必須啟用 cookie,而且會失去 $_SESSION 的某些特徵(後述)。這邊表格填 CI 就表示使用 CI 的 session,填 PHP 則是使用 PHP 的 $_SESSION。
獨立表示單獨的 library,例如 DB Session 要以 $this->db_session
存取;取代表示直接覆蓋 CI 的 Session 類別,所以程式寫法除了新增功能(例如 flashdata)之外沒有改變。
後面加註的是最接近的 CI 版本號,由於 CI 1.6 才正式新增 flashdata 功能和 sess_time_to_update(重新產生 session id)選項,所以舊的 lib 使用前可能需要修改才會與 CI_session 一致。註:即使版本相符,還是要留意選項歧義,例如 OB Session 的 session_expiration
設為 0 有特殊意義。
一般 session 只會把 SID (session id) 存進 cookie,但是 CI_session 會把所有資料都存進去,拿到 cookie 的壞人就有機會解出資料內容。
表格填 SID 表示只會把 SID 放進 cookie;填 SID (db) 表示若用資料庫儲存資料,cookie 內容就只會放 SID(若沒資料庫,還是會全放 cookie)。
另外 PHP 的 $_SESSION 在沒有 cookie 支援時仍可以用 URL 來傳 SID,只是這邊的 lib 除了 PHPSesson 在原始碼好像沒看到之外,都還是設計為需要 cookie 支援的。即使可以使用基於 URL(禁用 cookie)的 session,CodeIgniter 也要稍微修改才能用網址傳 SID 吧。
把 session 資料存在資料庫。CI_session 僅儲存 SID, ip_address 等資料,以用於驗證;其他 lib 會更進一步將 session->set_userdata
設的資料存入名為 session_data 的 text 欄位。
另外,雖然只有 KNDB Session 提供類似標準 CI 的選用資料庫選項,但其他基於 PHP $_SESSION 的 lib 似乎也能由 php.ini 的 session.save_handler 指定用資料庫儲存資料。
記錄該 library 已被包含於哪些認證用的 library。
最後看來,這些 lib 主要就分 CI Session 和 PHP Session 兩派,其餘選發佈順序晚的應該就差不多了。
神奇的解法!
取得BlogId >> data:blog.blogId
不妙,我也沒留底了
大大
檔案已失聯,跪求檔案
Yeah it really works but its better to keep a towel or any kind of cloth below the stained cloth nor the stain will be absorbed by the other side of that cloth.And it really doesn't matter whether the stain is of 1 week or 1 month.
Alec is awesome! I fix nearly everything that I possibly can in my home and use youtube almost exclusively. Most posts are a constant ramble and yammering and words filling dead air space. It 's unnecessary and confusing. Alec speaks only when necessary and demonstrates each fix quickly and accurately. Camera person is completely tuned in to every move Alec makes. Thanks! Just spot on