- ベストアンサー
php+MySqlでの「お知らせ」?について
会員サイトなどでログインしたユーザーに新着情報などがある場合に、トップページにリンクを貼り、ユーザーがリンク先に移動した後にトップページに戻ると新着情報のリンクを表示させないようにしたいのですが、どのような方法があるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ひとつはリファラをチェックすることログインページからの移動は 新着情報を表示し、それ以外からの移動は表示しないというロジック リファラは偽装がたやすいのでセキュリティがらみの処理には むきませんが、新着情報の表示・非表示程度のユーザビリティ調整であれば 充分対応できます もうひとつはセッションにフラグを埋め込むこと 一度新着情報をみたじてんでフラグをたて、フラグがあるときは 新着情報を表示しない。 ログアウト時にフラグを消してやれば次回も新着を表示できます 当然セッション情報には適当な生存期間を設定します 発展的な処理としては、ユーザーごとに新着をどこまで表示したかSQLで管理する 具体的にはユーザーごとに新着情報を確認した時間をSQLにもたせ、 その時間よりあとにリリースされた新着情報だけ表示するようにする ただ考え方次第ですが、新着情報は一度メニューをみたからといって 消してしまうのは機会損失です。 現在の時刻に対して、ある程度の猶予時間を設定して、新しいものは 消さずに表示するほうがユーザーの誘導ができてより意味があるものに なると思います
その他の回答 (2)
- shimix
- ベストアンサー率54% (865/1590)
会員サイトであれば、ユーザーごとに前回ログイン日時を持っていると思います。 #ログインしたら「「前回ログイン:・・・・」などと #表示するようなことも出来ますよね。 ログインしたら、 ・セッション変数にデータベースの前回ログイン日時を代入 ・データベースのログイン情報(前回ログイン日時含む)をUpdate あとは ・セッション変数の前回ログイン日時があったら、その日時以降の「お知らせ」を表示 ・セッション変数の前回ログイン日時を削除(戻ってきたときに表示しないように) でいいと思います。 前回ログイン日時でやるか、最終アクセス日時でやるかはお好みで。
お礼
皆さんのおかげでロジックが出来上がり、無事に完成しました。 思っていた以上に短期間でやりたい事が出来ました。 有難うございました。
- _if_
- ベストアンサー率52% (26/50)
ぱっと思いつくのはCookieにてユーザーが保持してもらうことを期待する方法ですね。 MySQLとのことなので、データベースを使用するとなると・・・ ・各ユーザーにnews_checkedカラムをTEXTにて作成 ・データは "1-32,34-55,90" のようにし、見た情報のIDを記録 後はsplitなりを使って番号の取り出しをし、抜けてる番号の新着を表示させればよいでしょうか。 あまり処理が長くならないように、適度に最適化する必要がありますね。
お礼
皆さんのおかげでロジックが出来上がり、無事に完成しました。 思っていた以上に短期間でやりたい事が出来ました。 有難うございました。
お礼
皆さんのおかげでロジックが出来上がり、無事に完成しました。 思っていた以上に短期間でやりたい事が出来ました。 有難うございました。