ラベル CakePHP の投稿を表示しています。 すべての投稿を表示
ラベル CakePHP の投稿を表示しています。 すべての投稿を表示

2013年2月5日火曜日

CakePHP 2.xで JSONを返す

リクエストとレスポンスオブジェクト — CakePHP Cookbook v2.x documentation
CakeResponse は次のような共通のレスポンスをラップするためのインターフェイスを提供します。:

リダイレクトのためにヘッダを送ること。
コンテンツタイプヘッダを送ること。
ヘッダを送ること。
レスポンスボディを送ること。

Googleで検索すると、header()を使ったり $this->header() を使ったり beforeFilter() を使ったりする古い記述に惑わされるが、実際にはControllerにこれだけ書くだけでいいみたい。Viewも要らない。
public function action_name() {
    $arr = array('jsonの' => '中身');
    return new CakeResponse(array('type' => 'json', 'body' => json_encode($arr)));
}

シンプルだ。
Content-Typeもapplication/jsonになる。
CakeResponseは、他にもブラウザキャッシュの制御もできるみたい。


2010年11月18日木曜日

CakePHPの SecurityComponentに 任意のPHPコードを実行できる脆弱性

CakePHPのSecurityComponentに深刻なセキュリティホールが見つかりました - Shin x blog
SecurityComponentの実装に問題があり、結果、外部から任意のコードを実行させることができるという深刻な内容です。

CakePHP1.2.9 / 1.3.6では解消済みらしい。
古いCakeをバージョンアップせずに使ってるところ多いと思うけど、大丈夫なのかな?
WordPressみたいに気軽にUpdateできるといいんだけどね。(無理か。)

2010年9月24日金曜日

CakePHPで作った JSONが jQueryでパースエラーになる

コスミー報告書[社外秘] - CakePHP+jQuery
“~~/モデル名/autocomplete/”で返すページにCakePHPが自動的に表示にかかった時間を出力していた。
出力されていたのはHTMLコメント形式のデータ。
結果として返されていたデータは下記のような形式となっていた。
['aaa','bbb','ccc']
jQueryのJSONパーザにおいて、Firefoxでは上記形式を正しくパーズできるが、IEでは処理できずにエラーとなっていた。

やはりこれか。自分の場合、Firefoxでエラーになった。JSONの後ろに"; //"をつけてコメントアウトしたのに効かないのだ。

ブログ アーカイブ

カテゴリー