0

私たちのサイトの簡単な分析を構築するために、ユーザーがページにアクセスした場所からソースをキャプチャしようとしています。ユーザーが最終的に登録した場合は、ソースをデータベースに保存します。

このコードはすべてのページに配置する必要があるため、layout.phtml に追加することを考えました。

$ref_cookie = $_COOKIE["xyzcom-referrer"];
if(!Zend_Auth::getInstance()->hasIdentity() && $ref_cookie==null) {
$ref=null;
$ref=$_GET['ref'];
if($ref==null || strlen($ref)==0)
    $ref= $_SERVER["HTTP_REFERER"];
// ユーザーが後で戻って登録する場合に備えて、Cookie に設定します
setcookie("xyzcom-referrer",$ref);
}

かなり自明です-ユーザーがログインしていない場合-refパラメーターまたはHTTP_REFERRERを介してリファラーを取得しようとしています。Cookie に保存している理由は、ユーザーが今日サイトにアクセスしても、1 週間後にサインアップする可能性があるためです。

したがって、ユーザーが登録するたびに、この Cookie が設定されているかどうかを確認し、設定されている場合は値を取得し、参照元としてデータベースに挿入します。

これがこれにアプローチする最良の方法ですか。または、コントローラー プラグインのように書く必要があります。ヒントをありがとう。

4

1 に答える 1

2

レイアウトは実際にはこの種のロジックの場所ではないため、コントローラー プラグインに移動することをお勧めします。これは簡単で、プラグイン クラスを作成し、それをフロント コントローラーに登録し、そのクラスでpreDispatch(マニュアルで説明されているように) メソッドを作成し、コードをそこに移動します。

コードにはいくつかの問題もあります。

  • HTTP_REFERER が設定されると想定していますが、設定されていない可能性があります。

  • パスなしでセッションのみの Cookie (ユーザーがブラウザーを閉じると削除される) を設定しています (つまり、サイトのサブディレクトリに設定されている場合、ホームページでは使用できません)。setcookie()これらの問題に対処するには、3 番目と 4 番目のパラメーターを指定する必要があります。

于 2012-06-23T17:32:55.967 に答える