最近閲覧した製品のコードを書くための最良の方法は何でしょうか?私はデータベースを使用して動的ページを作成し、ID番号をセッションまたはCookieに保存して、データベースから画像とタイトルを取得できると考えました。しかし、これがうまくいくかどうかはわかりませんでした。最後に表示された5つのアイテムのみを表示し、重複は表示しないようにします。何か案は?
3 に答える
ユーザーがログインしている場合は、userIDと表示されたproductIDを提供する「userViews」というテーブルを作成できます。次に、productIDで「SELECTDISTINCT」を使用してクエリを選択できます。これにより、一意の値が選択されます。(http://www.w3schools.com/sql/sql_distinct.aspを確認してください)
ユーザーがログインしていない場合は、同じことを行うことをお勧めしますが、userIDを使用する代わりに、ユーザーから一意の何かを見つけてみてください。ランダムな(一意の)番号を使用してCookieまたはセッションを設定し、それをデータベースにリンクしてみてください。
従来の方法は、Cookie内に保存することです。Cookieを暗号化できる場合は、暗号化してください。
Cookieはユーザーが変更できることを忘れないでください。一番のルールは、ユーザー入力を決して信用しないことです。全体として、表示する前に必ず情報を検証してください。そうしないと、攻撃の世界に自分自身を開放することになります。
IDを配列に格納しますか?'、'、または'。'で区切ります。--IDを保存するために100個の異なるCookieを作成しないでください。
ビューを格納するためにSQLを使用することもできます...しかし、なぜ不要なSQLクエリを使用するのですか?SQLは長期保存用です。セッションとCookieは現在のアクション用です。
最近表示した商品を表示する方法は3つあります。(多分他の方法ですが、これら3つが主に使用されます)。
- IPに基づく
- 最近Cookieで表示されたストア
- セッションID
IPに基づく
これは良い考えではありません。2人が同じルーターを使用している可能性があり、製品を見なかった人が他の人の最近のビューを見る可能性があるためです。(IPベースを使用して、お住まいの地域などの他の人に表示することができます。)
クッキーに基づく
Cookieを使用することで、サイトにアクセスしているユーザーに最近の製品が表示されることを100%確信できますが、すべてのユーザー/訪問者がCookieを有効にしているわけではなく、Cookieは簡単に編集でき、適切に暗号化しないとセキュリティリスクが発生します。
セッションID
訪問者のランダムを生成し、user_id
この情報を次のようにデータベースに保存できます。
start_session();
if(!$_SESSION['user_id']){
$_SESSION['user_id'] = rand(1, 1000000);
mysql_query('INSERT INTO products_recent (user_id) VALUES ('.$_SESSION['userid'].')');
}
また、ユーザーの製品ビューを選択/更新して、そのユーザーに表示することもできます。
また、必要に応じて24時間ごとにデータベースを簡単にクリーンアップすることも、このデータを分析目的に使用することもできます。
最後に-登録ユーザー
登録ユーザーがあなたの製品を表示する場合は、データベースに保存して、ストアにアクセスするたびにこれらの最近の表示製品を表示することを強くお勧めします。
ありがとう、