現在位置のURL
例えばログイン認証をかけたページに対して、ログインしてないユーザーがアクセスしたとき、ログインページを表示します。で、ログインに成功したら、もともとユーザーがアクセスしてきたページにリダイレクトさせると思うのです。
そういったときにいわゆる「戻り先URL」というのが必要になってくるのですが、FWに依らずこれを生成するコード、というのがあんま見かけないです。
試しにこんな感じで作ってみました。
function current_url() { $_url = $_SERVER['REQUEST_URI']; $_http_host = $_SERVER['HTTP_HOST']; if (empty($_http_host)) { $_http_host = $_SERVER['SERVER_NAME']; } $_server_port = $_SERVER['SERVER_PORT']; $_schema = 'http'; if ($_server_port == 443) { $_schema .= 's'; } $_port = ''; if ($_server_port != 80 && $_server_port != 443) { $_port = ':' . $_server_port; } return $_schema . '://' . $_http_host . $_port . $_url; }
で、結構この「戻り先URL」として現在位置のURLを算出して渡す、という挙動は多いと思うのですが、なんか、FWとして実装してるのってあるんですかね?最近のはmod_rewrite併用が多いため、遷移先のURLを生成する、というのは多いようなんですが、逆に現在位置のURLを取得するって処理、どうなんでしょうかね・・・。
ちなみに、こないだちょっとsymfonyを使ったんですが、その時は自前でこんな「戻り先URL」取得関数を作って使ってました。どうやって調べだしたのか、完全に忘却の彼方。
public static function current_url($is_absolute = true) { $current_uri = sfRouting::getInstance()->getCurrentInternalUri(); return sfContext::getInstance()->getController()->genUrl($current_uri, $is_absolute); }