Ticket #608 (closed バグ指摘: 修正済)

Opened 11 years ago

Last modified 10 years ago

LC_Page::sendRedirect()の$urlにGETパラメータを渡せない

Reported by: Seasoft Owned by: Seasoft
Priority: Milestone: EC-CUBE2.11.0
Component: その他 Version: コミュニティ (eccube-comu)
Keywords: Cc:
修正済み:

Description

 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=5447&forum=4

引用

LC_Page::sendRedirect('hoge.php?a=1')
としてもリダイレクト後のページにGETパラメータを引き継ぐことができません。
結果として、このメソッドをheader()関数として用いることができません。
仕様なのかもしれませんが、少々困ったので解決策を提示しておきます。

function sendRedirect($url, $isMobile = false ) {

 $netURL = new Net_URL($url);

 //GETパラメータを保存しておく
  $queryStringArray=$netURL->querystring;

  //今までの処理…略

  //保存したGETパラメータを追加
   if(is_array($queryStringArray)){
    foreach($queryStringArray as $key=>$val){
     $netURL->addQueryString($key, $val);
    }
   }
  
 //リダイレクト
   header("Location: " . $netURL->getURL());
   exit();
}

ちなみに原因はNet_URL::addRawQueryString()がそれまでのパラメータを全削除するせいです。
明らかにバグだと思うのですが中の人はバグじゃないとか言っています。
http://pear.php.net/bugs/bug.php?id=3942

Change History

comment:1 Changed 11 years ago by Seasoft

  • Status changed from new to closed
  • Resolution set to 再現不能

comment:2 Changed 11 years ago by Seasoft

  • Status changed from closed to reopened
  • Resolution 再現不能 deleted

HTTP リクエスト時に、パラメータ(クエリーストリング)を渡している場合に再現することを確認。

comment:3 Changed 10 years ago by Seasoft

  • Milestone changed from EC-CUBE2.5.0beta to EC-CUBE2.5.0

comment:4 Changed 10 years ago by Seasoft

  • Owner changed from somebody to Seasoft
  • Status changed from reopened to new

comment:5 Changed 10 years ago by Seasoft

  • Status changed from new to assigned

comment:6 Changed 10 years ago by Seasoft

  • Status changed from assigned to closed
  • Resolution set to 修正済
Note: See TracTickets for help on using tickets.