このエントリーが役に立ったらシェアをお願いします!

CakePHPでリファラのURLを取得する – referer関数

このエントリーが役に立ったらシェアをお願いします!

今回はCakePHPのControllerでreferer(前のページのURL)を取得する方法についてご紹介します。
ピュアのPHPだと$_SERVER[‘HTTP_REFERER’]で取得できますが、CakePHPではControllerの関数で取得することができます。
CakePHPで関数で取得する場合はリファラのURLが取れなかった時に、代わりとなるURLを指定しておくことができます。
通常の$_SERVER[‘HTTP_REFERER’]を使うよりもメリットが多いので積極的に使っていきましょう。

スポンサーリンク

Controllerで前のページのURLを取得する

CakePHPでrefererを取得するにはControllerのreferer関数を使用します。

Controller::referer(mixed $default = null, boolean $local = false)

現在のリクエストに対するリファラURLを返します。 $default パラメータは、HTTP_REFERERがヘッダから読み取れなかった場合にデフォルトURLとして使うために指定します。

Controller::referer()

第一引数はrefererが取れなかった場合に代わりとなるURLを指定できます。
Router::urlで使える配列形式で指定し、自動生成してくれます。
第二引数はtrueを指定すると相対パスを返すようになります。

実際にコードを見てみましょう。

class TestController extends AppController {

  public function index() {
    // 前のURLをフルパスで取得
    $url = $this->referer();
    // 前のURLを相対URLで取得
    $url = $this->referer(null, true);
    // リファラが取れない場合はeditアクションのURLを返す
    $url = $this->referer(array('action' => 'edit'));
    $this->redirect($url);
  }
}

以上になります。
開発の時にrefererを取ることはよくあると思います。
引数を理解し、有効活用していきましょう!

スポンサーリンク

このエントリーが役に立ったらシェアをお願いします!

1この記事を書いた人
ShoheiTai
フロントエンド志向のWebエンジニア。
HTML5やWeb高速化、SEO等のフロントエンド開発が大好物。
バックエンドではCakePHP,Wordpress開発を主戦場としています。
Web開発のスパイスファクトリー株式会社創業メンバー。

CakePHPでリファラのURLを取得する – referer関数
イケてないコード - Webエンジニアのブログの
最新情報をいいねしてチェックしよう!