LOGIN ID Password Auto Login Register Now! Lost Password?
XUGJ Forum

urlencode されていないクエリが含まれる時の問題

このトピックの投稿一覧へ

なし urlencode されていないクエリが含まれる時の問題

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-25 23:10
nao-pon  Chief Officer 登録日: 2006-9-29   投稿数: 110
SF.net のトラッカー( http://sourceforge.net/tracker/index.php?func=detail&aid=2073613&grou... )にも上げましたが、英語がとても苦手なため補足しておきます。

fuga さん達と一緒に突っついている OpenID モジュールで fuga さんが Mixi 対応したときに見つけた問題です。

"Legacy_Controller.class.php" と
"Legacy_PublicControllerStrategy.class.php" にて、$_SERVER['REQUEST_URI'] を parse_url() で処理しているのですが、parse_url() では URI のみでは、正常に処理できない場合があるようです。

例えば、GETクエリーが "XOOPS_URL/index.php?http://" であった場合に、parse_url($_SERVER['REQUEST_URI']) は失敗して FALSE を返します。("http://" が URLエンコードされていれば問題はない。)

そこで、自分なりに次のように変更してみたところ、なんとなく上手くいっているようです。

Legacy_Controller.class.php, Line:383 -

//$requestPathInfo = parse_url($_SERVER['REQUEST_URI']);
//$requestPath = isset($requestPathInfo['path']) ? urldecode($requestPathInfo['path']) : '';
$requestPathInfo = explode('?', $_SERVER['REQUEST_URI']);
$requestPath = urldecode($requestPathInfo[0]);

Legacy_PublicControllerStrategy.class.php, Line: 43 -

//$pathArray = parse_url(xoops_getenv('REQUEST_URI'));
//$mid = preg_match("#(/index\.php|/)$#i", @$pathArray['path']) ? -1 : 0;
$pathArray = explode('?', xoops_getenv('REQUEST_URI'));
$mid = preg_match("#(/index\.php|/)$#i", $pathArray[0]) ? -1 : 0;

検証をよろしくお願いします。
投票数:0 平均点:0.00

投稿ツリー

  条件検索へ


Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities