自分のサイトにコメントセクションを実装しました。送信ボタンを押した後、ajax aproachによって以下のプロセスが実行されます。AJAX通話中にランダムにPHPセッションが失われたり空になったりする
- コメントはデータベースに保存されます。
- コメントの詳細を記録したコメントログを更新します(まだDBを使用します)。 (例:John Doeが誰かの投稿にコメントしました。)
- コメントセクションをリロードします。新しいコメントが表示されるようになりました。
- 完了。
問題は次の2番目の擬似コードを参照してください。
session_start();
//1. saves the comment in the database.
//2. this gets the current user who submitted the comment
// hence I used the $_SESSION variable
$log .= "$_SESSION['firstname'] $_SESSION['lastname'] "
. 'has commented on someone\'s wishlist.';
updateLog($log); // commits the log in the database.
時には、結果が行く:
ジョン・ドウは、誰かのウィッシュリストにコメントしています。
他の倍の$ _SESSIONは空で、につながる:
が誰かのウィッシュリストにコメントしています。
どこに問題があるのかわかりません。しかし、Ajaxの呼び出しでセッションの詳細を渡すことをお勧めしますか? ようなので、(擬似コード):$ _SESSION変数はPHPページでどこでも利用可能であることから、それは市場でのベストプラクティスではないかもしれないので、上記
$.ajax({
url: 'includes/request.php',
type: "POST",
data: {
firstname : $_SESSION['firstname'],
lastname : $_SESSION['lastname'],
//more details here.
success: function(result) {
// update the inner html of comment section
}
});
は、私は解決策に疑問を持っています。このシナリオでは、とにかくベストプラクティスは何ですか?
最後に自分のドメイン名は、ネットワーク管理者(下図)によりマスクされる:から
:にcomments.com
:coolnamebynetad.com
マスキングが可能でした犯人?私は$ _SESSION変数が何度か働いていて、いくつかのランダムな理由のためにそうではないと思います。
特定のIDとのセッションを開始し、手動で@ SergeSまずは、AJAXでセッションを使用する際には、これが最良の方法/練習になるでしょうか? – JohnnyQ
AFAIKはい、私はそれを使用しています... – SergeS
ありがとう@SergeS私はこれが正しい方法ではないと思ったので、私は他のユーザーのセッションのトラックを失っていたことに気づいた。私はまた、それがURLのマスキングの影響を受けたと思います。 – JohnnyQ