Locationヘッダーの代わりにinclude
PHPの話ですが。
例えば、こんな感じのソースがあったとする。
[php num=1]
// test.php
header('Location: http://www.example.com/home.php?sort=normal' );
[/php]
[php num=1]
// home.php
$sort=$_GET['sort'];
// 以下、$sortを使った処理
[/php]
リダイレクトを使った処理なのだけども、でもうまく動かないブラウザとかあるのよね。
vodafoneはリダイレクト出来ない?
ってことで、include を使った処理を考えてみる。
[php num=1] // test.php $GET['sort'] = 'normal'; include('home.php'); [/php] [php num=1] // home.php $sort=$GET['sort']; // 以下、$sortを使った処理 [/php]
ただ$_GETを上書きするのもあんまりだなぁ、ってことで、
[php num=1] class SdRequest { function & getInstance(){ static $singleton; if ($singleton == null) { $singleton = new SdRrequest(); } return $singleton; } function SdRequest(){ $this->parameters = $_GET; } function get($key){ return $this->parameters[$key]; } function overwrite($key,$value){ $this->parameters[$key] = $value; } } [/php]
みたいな$_GETのラッパークラスを利用する。
(どのみちこの手のクラスは必要になることが多いと思う)
で、
[php num=1] // test.php $param= & SdRequest::getInstance(); $param->overwrite('sort','normal'); include('home.php'); [/php] [php num=1] // home.php $param= & SdRequest::getInstance(); $sort= $param->get('sort'); // 以下、$sortを使った処理 [/php]
って感じにすれば、ちょっとはすっきりしたソースになる気がする。