Standing on the Shoulder of Linus

Home / 2013 / 9月 / 30 / FuelPHP でリファラーを取得し、Novius OS 問い合わせフォームで送信する

FuelPHP でリファラーを取得し、Novius OS 問い合わせフォームで送信する

「Novius OS の問い合わせフォームで、リファラーを取得して送信できないか?」ということで調べてみました。(Novius OS は、FuelPHP, wijmo を活用した CMS です。)

Novius OS のフォームには、隠しフィールドを設定することができます。隠しフィールドは、フォームを入力する人には表示しないけれども、内部ではデータを保持しており、フォーム送信時に隠しフィールドのデータも一緒に送信されます。

form_new_field

ひとまず「一行テキスト」を選択します。

form_hidden

「一行テキスト」を「隠しフィールド」に変更します。生成元と変数名が指定できるようになります。生成元は、Get, Post, Request, Global, Session から選択できます。リファラーはサーバー変数なので、直接設定する事はできないようです。

なので、セッション変数にリファラーを格納しておき、フォームの隠しフィールドではセッション変数を取得する、という実装を考えました。FuelPHP の機能を使えば、セッション変数にリファラーを格納することが簡単だからです。

/**
 * Copyright Fumito MIZUNO 2013
 * MIT License http://opensource.org/licenses/MIT
 */
Event::register_function('front.start', function()
{
    $ref = Input::referrer();
    if (filter_var($ref, FILTER_VALIDATE_URL))
    {
        Session::set('referrer',$ref);
    }
});

FuelPHP を使って実装

FuelPHP の機能にイベントがあります。Novius OS では、各所にイベントが設定されています。今回はフロント画面表示時に処理を追加したいので front.start を使用しています。

リファラーは、$_SERVER['HTTP_REFERER'] を直接読み込む方法もありますが、FuelPHP の Input クラスにある referrer メソッドを使用します。リファラーはユーザーが改変できるので、妥当な URL かどうかを確認してからセッション変数に格納します。セッション変数への格納は、Session クラスの set メソッドを使えば OK です。

ということで、FuelPHP の機能を使って、セッション変数にリファラーを格納することができました。フレームワークを使うと楽ですね。リファラー以外のデータをフォームで取得したい、という場合も、同様にセッション変数にセットしておけば良いです。

FuelPHP のプロファイラーで確認する

では、本当にセッション変数にリファラーを格納することができたのか、確認してみましょう。FuelPHP のプロファイラー機能を利用すると、セッション変数の値を確認することができます。(Novius OS では、開発環境(Fuel::DEVELOPMENT) ではプロファイリングがデフォルトで有効になります。)

session_profiler

実際にセッション変数 referrer に URL が入っていることが確認できます。

以上、FuelPHP フレームワークを使う事で、カスタマイズがしやすい、というお話でした。

関連

Posted in cms | Tagged AGPL, fuelphp, Novius-OS, フォーム, リファラー
← WordCamp Tokyo 2013 の動画が公開されました。 hon.jpの書籍チェックサービスを受けてみました。 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.