ご挨拶、
URL パス経由で Cake に送信されたデータに奇妙な問題があります。パスに URL エンコードされたエンティティが含まれている場合、エンコードされた文字が削除されたように見え、残りの URL パスがコントローラーに渡されません。例えば:
http://mydomain.com/products/search/pants+%26%2A%25+shoes/1/pg-2/
これpants &*% shoes
により、製品コントローラのsearch()
アクションに文字列が最初の引数として渡され、他の 2 つの引数とともに1
渡さpg-2
れます。しかし、代わりにpants
、最初の引数として(末尾のスペースを使用して)取得し、2番目または3番目の引数は取得しません。Sanitize クラスが使用されていないことを確認し、Configure::write('App.encoding', 'UTF-8');
設定しました。
何かご意見は?
ありがとうございます。
-土星
更新: Cake は %26 をクエリ文字列引数のアンパサンド区切りとして認識しています。Cake はクエリ文字列セパレータとリテラル char の違いを認識すべきではありませんか? それとも、出血している明らかな何かが欠けていますか?(私は何時間も働いています...)
更新 2:これはバグの可能性があると思います。次のような URL を渡すと:
http://mydomain.com/products/search/?q=pants%20%2A%24%25%5E%26%20shoes&cat=1&pg=2
Cake はそれを正しく解析します。つまり、さまざまな引数がクエリ文字列パラメーターとして に格納されます$this->params['url']
。しゃっくりは、URL パスでエンコードされたアンパサンドを使用している場合にのみ発生するようです。
ちなみに、最新の Cake 1.3.6 を使っています。
これについて他の人の意見を知りたいです。ありがとう。