PHP Google Analytics Zend_View
Google Analyticsのコードを埋め込んだページで以下のようなエラーが発生した
Setting private or protected class members is not allowed Zend_View_Abstract->__set('__utmz', '1234567890.12387...')
エラーメッセージから原因が全然つかめなかったので、特定するまでに苦労した。
最初からスタックトレースみてれば早かったかも。
$data = $_REQUEST; foreach ($data as $key => $val) { $this->view->$key = $val; }
$_REQUESTでとった配列を、なんのフィルターも掛けずに、Zend_Viewのプロパティにセットしていたためだった。
$_REQUESTでcookieも取ってきてたため、Google Analyticsが生成したcookieを取得してしまっている。
それを、セット関数とか使わずに単にプロパティとしてアクセスしていたため、__setが作動している。また、cookieのキー名に__(_が2つ)から始まるキー名があり、それをプロパティ名として使ったために起きていたと思われる。
Zendの関数を使ってPOSTだけを取得し、さらに意図したキー名のみ取得するように変更。