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

リファラを取得するCakePHP

今回は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を取ることはよくあると思います。
引数を理解し、有効活用していきましょう!

CakePHP
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
この記事を書いた人

スパイスファクトリー株式会社 Webエンジニア。フロントエンドやWebサイトの高速化が得意です。インフラ・バックエンドも一通りやってます。
個人的なお仕事のご依頼や情報交換などはお問い合わせまたはTwitterにメンションをお願いします。

ShoheiTaiをフォローする
このエントリーが役に立ったらシェアをお願いします!
イケてないコード – Webエンジニアのブログ

コメント

タイトルとURLをコピーしました