ショッピングカートを節約する最良の方法を知りたいのですが。ユーザーがブラウザを閉じても、ショッピングカートの詳細(セッション変数)を保持したいのですが。ウィンドウを閉じるイベントが発生したらすぐにデータをテーブルに保存することを検討しますが、jquery unLoadまたはbeforeUnloadイベントが必要なものであるかどうかはわかりません。これは、さまざまなブラウザーで機能しないように見えるためです。
私を正しい道に導くための指針をいただければ幸いです
ショッピングカートを節約する最良の方法を知りたいのですが。ユーザーがブラウザを閉じても、ショッピングカートの詳細(セッション変数)を保持したいのですが。ウィンドウを閉じるイベントが発生したらすぐにデータをテーブルに保存することを検討しますが、jquery unLoadまたはbeforeUnloadイベントが必要なものであるかどうかはわかりません。これは、さまざまなブラウザーで機能しないように見えるためです。
私を正しい道に導くための指針をいただければ幸いです
ブラウザを閉じるときは、セッションCookieをブラウザに保持するほどではありません。私が正しく理解していれば、セッション(つまり、$ _ SESSION変数)を使用しているので、比較的簡単なはずです。PHPの関数session_set_cookie_paramsは、おそらくその方法です。自分で設定できない場合でも、セッションのCookieの有効期間をもう少し説明するオプションsession.cookie_lifetime
(ここにあります)もあります。
セッションCookieの有効期間は秒単位です。したがって、60秒に設定してサイトにアクセスすると、セッションCookieはCookieを破棄する前に60秒しか持続せず、セッションが事実上破棄されます。これを防ぐために、ライフタイムを高い数値に設定してください。
セッションデータはサーバー側であり、ブラウザにあるのはセッションIDだけなので、必要なのはセッションIDを長持ちさせることだけです。
php.ini
これは、設定、特にセッションCookieの存続期間に関する設定を編集することによって行われます。の場合0
、ブラウザを閉じるとCookieがクリアされます。
高い数値に設定してみてください。これにより、セッションが持続します。
たぶん、ブラウザが閉じているときではなく、変更しているときにデータを保存します。保存は、データベース、ローカルストレージ、またはCookieで行うことができます。
とにかく、ショッピングカートのデータをそのままにしておかないのはなぜですか。彼らがサイトにいるときにそれが必要であり、彼らが去ったときにそれがまだ必要な場合は、それを永続化してください。セッションが中止されたときに確実にピックアップするのは難しいです。セッションが終了したり、ブラウザプロセスが停止したりする可能性があるためです。カートへのすべての変更は、カートまたはそれに関連付けられたCookieを明示的に削除するまで保存する必要があります。
データが変更されるとすぐにデータを保存します。なぜ待つのですか?誰かがカートにアイテムを追加したらすぐに、それを保存します。
jQueryunLoadメソッドはどこでも機能します。テーブルについて話すときは、カートをDBに保存したいと思います。したがって、サーバーに対して同期ajax呼び出しを行う必要があります。これにより、PHPはそれを保存し、おそらく識別子を返すことができます。これをCookieに入れる必要があります。
問題は、この手順に比較的長い時間(1〜2秒)かかる可能性があることです。保存ボタンを提供するだけです。