5

ビュー モジュールと組み合わせて Finder モジュールを使用して、クライアント Web サイトの検索を作成しました。問題は、私のクライアントが、ユーザーが特定の地域のビジネスを選択して検索するたびに、訪問者のコンピューターにセッションまたは Cookie として保存する必要があることです。これにより、再訪問者が以前に行ったのと同じ検索が表示されるようになります。サイトをご確認ください: http://naplesres.designbracket.com/

さらに、以前の検索に基づいて、Web サイトで使用される残りのビュー、つまり Auto、Beauty などのページで彼のローカル エリアのビジネスのみが渡されるようにビューを構成できるかどうかも知りたいです。 .

ドキュメントへのリンク、それをどのように進めるかについてのポインタの形での助けは、深く感謝されます.

ありがとう

4

3 に答える 3

10

何かを追跡する必要があり、ログインしていないユーザーと連携する必要がある場合は、Cookie を使用して追跡する必要があります。セッションはユーザー オブジェクトに結び付けられているため、セッションを使用して Drupal で匿名の訪問者のために物を保存することはできません。

ここ ( http://www.w3schools.com/PHP/php_cookies.asp ) に説明がありますが、詳しく説明します。

setcookie(name, value, expire) を使用して開始します - この値を business_search と呼びたいと仮定し、郵便番号である「80204」のテスト値を使用します - これは問題なく動作します「コロラド州デンバー」を使用する場合。6 か月間有効期限が切れないようにしたいので、次のように呼び出します。

setcookie('business_search', '80204', time() + 3600 * 24 * 180);

その時間は、現在の時間に約 6 か月分の秒が追加されていることを表しています。

後で Cookie を取得するのはさらに簡単です。$_COOKIE['business_search'] を使用するだけで、値が返されます。したがって、次のコードを使用できます。

<?php
function saveSerch($search_term) {
  setcookie('business_search', $search_term, time() + 3600 * 24 * 180);
}

function readSearch() {
  return $_COOKIE['business_search'];
}
?>
于 2009-08-25T01:45:28.757 に答える
3

クライアント側の Cookie を Drupal に貼り付けるのに問題がある場合は、path にオプションのパラメーターを使用してみてください。

例:

setcookie('myCookieName', 'myCookieData', 0, '/');

次に、次のページの読み込みで、Cookie を画面に出力します。出力に Cookie が表示されるはずです。

print_r($_COOKIE);

-またはより具体的に-

print $_COOKIE['myCookieName'];

乾杯!

于 2010-06-03T17:47:18.073 に答える
3

もちろんそれは可能ですが、通常の Drupal の方法ではありません。通常行うことは、情報をセッション ( sess_write/を使用sess_read) に保存するか、ユーザーがログインしている場合はユーザー アカウント情報に保存することです。

Cookie に情報を保持することは、クライアント側で改ざんされる可能性があることを意味し、ユーザーが作成したデータと同様に、コードをさらに確実にする必要があります。

セッションに保持すると、セッションが存続する限り保持されますが、その後は消えます。匿名ユーザーの場合、これ以上の方法はありません。OTOH、ログインしているユーザーの場合、情報を保存すると、テーブル$user->dataに保存されるため、削除しない限り利用できるようになります。users

また、匿名からログインに切り替えると drupal セッション Cookie が再生成されますが、セッションの内容は保持されるため、匿名セッションにデータを入れて、ユーザーがログインしたときにそれを保持し、アカウント データに保存することができます。 . includes/session.incこれがどのように機能するかについての詳細は、 を参照してください。

于 2009-08-23T07:32:31.237 に答える