2009-08-22 15 views
5

FinderモジュールとViewsモジュールを使用してクライアントWebサイトの検索を作成しました。問題は、私のクライアントは、ユーザーが特定の地域のビジネスを選択して検索するたびに、セッションまたはクッキーとして訪問者のコンピュータに保存する必要があるということです。これは、繰り返し訪問者が以前に行ったのと同じ検索を確実にすることを保証する。私は彼の地域の唯一のビジネス上での使用ビューの残りの部分で渡されることのようにビューを設定することができ、以前の検索に基づいている場合、私も知りたい、またhttp://naplesres.designbracket.com/Drupal 6にセッション/クッキーを訪問者のコンピュータに保存する方法

: はサイトをご確認くださいウェブサイトは、自動、美容などのページに表示されます。

ドキュメントへのリンクの任意のヘルプは、それについて行く方法についてのポインタは深く感謝されます。もちろん

おかげ

+0

ユーザーはログインしていますか? – googletorp

+0

検索は匿名ユーザーとログインユーザーの両方で行うことができます。基本的には、同じ人が以前に行った検索を覚えておき、既定の結果セットを投げるだけです。 – Sbhambry

答えて

3

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

クッキーに情報を保持するということは、クライアント側で改ざんされる可能性があることを意味し、ユーザーが作成したデータの場合と同様に、コードを完全に保護する必要があります。

セッションに残しておくと、セッションが存続する限り保持されますが、その後は消えます。匿名ユーザーにとっては、本当に良い方法はありません。 OTOHは、ログインしたユーザーのために、$user->dataに情報を格納すると、それらが削除されない限り利用可能になることを意味します。これは、usersテーブルに格納されるためです。

また、匿名セッションからログインしてもセッションの内容を保持するので、匿名セッションにデータを入れてユーザーがログインしてもデータを保持できるように、drupalセッションCookieが再生成されることに注意してください彼の口座データにこれがどのように機能するかについては、includes/session.incを参照してください。

9

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

ここには、http://www.w3schools.com/PHP/php_cookies.aspの説明がありますが、私にそれを聞かせてください。

setcookie(name、value、expire)を使用して開始します。この値をbusiness_searchとし、テスト値 '80204'を使用します。これは郵便番号です'Denver、CO'を使うとうまく動作します。私たちは、ああ、それがために期限切れにしたい半年、私たちは、呼び出したいでしょうしません:

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

がその時は今の時間に追加されている秒の価値が約6ヶ月を表します。

後でクッキーを取得する方が簡単です。$ _COOKIE ['business_search']を使用するだけで、値が返されます。だから、私たちは、このコードを使用することができます。

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

function readSearch() { 
    return $_COOKIE['business_search']; 
} 
?> 
+1

-1。これはクッキーの素晴らしい説明ですが、Drupalフレームワークに関する質問がありました。この回答はDrupalのセッションについては言及しておらず、そのセッションと統合しようとすると混乱を招く可能性があります。 –

+1

私は-1が少し過酷であると言いたいと思います。私は答えが非常に役に立つとわかりました。これは上記の答えと組み合わせて、かなりのことを明確にするのに役立ちます。私はThank You Johnとしか言わないでしょう:) – Sbhambry

+0

私はDrupalフレームワークに関して回答していました。最初の段落でDrupalでセッションについて議論しました。 「あなたはDrupalの匿名の訪問者のためにセッションを使用することはできません。なぜなら、それはユーザーオブジェクトに縛られているからです。だから、私は匿名の訪問者で動作するクッキーをどうするかを説明します。 –

3

あなたがトラブルのDrupalに固執し、あなたのクライアント側のクッキーを取得した場合は、パスのためのオプションのパラメータを使用してみてください。

例:画面に

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

そして、次のページの読み込み出力のクッキー。出力にはCookieが表示されます。

print_r($_COOKIE);

-orよりspecifically-

print $_COOKIE['myCookieName'];

乾杯!

関連する問題