1

私のサイトにはある種のデザイン上の問題があります。紹介は次のとおりです。

ビデオプレーヤーとその横に再生するビデオの束を含むシンプルで動的なページがあります。ビデオプレーヤーの下には、 jqueryフォームプラグインを利用したコメントセクションがあります。これは、視聴中に誰かがコメントを入力した場合に、ページを更新してビデオをリセットしたくないためです。

したがって、ページは$ _GET変数を介して再生するビデオIDをフェッチし、MySQLデータベースからIDに基づいてさらに10程度のビデオリンクを取得し、最初のリンクを再生し、残りをプレーヤーの横にリンクとしてリストします。

コメントシステムはシンプルです。再生中のビデオと同じIDを持つMySQLテーブルからすべてのコメントをフェッチし、前述のjqueryフォームプラグインを介してそれらを一覧表示します。新しいコメントを入力すると、同じIDをターゲットにして、コメントがテーブルに再度追加されます。

ajaxフォームプラグインは、コメントを表示/追加するコードを含む外部PHPファイルからコメントをフェッチするため、メインページからそれらのファイルに情報を渡すために$_SESSION変数を使用する必要があります。

そして、ここに問題があります:

クライアントがページを正常に閲覧すると、すべてが期待どおりに機能します。しかし、クライアントが別のビデオを開いて新しいタブを開くことにした場合、コメントシステムが機能しなくなります。

つまり、メインページの$_GET変数から$_SESSION変数にビデオIDを渡し、それを使用して、表示するコメントを外部のshow/add-comments-PHP-filesに通知します。これは、クライアントが1つのタブのみを使用している場合は正常に機能しますが、クライアントが新しいタブで別のビデオを開くと、もちろん$ _SESSION変数が更新され、新しいタブの現在再生中のビデオのコメントと一致します。この変数は両方のタブで同じであるため、元のタブ新しいタブのコメントを誤って指しているようになりました。

だから..うまくいけば少し明確にするために:

ブラウザタブ1:

$ _SESSION['now_playing']=ビデオ1

[..クライアントは別のビデオを2番目のタブに開きます]

ブラウザタブ2:

$ _SESSION['now_playing']=ビデオ2

..そしてこの時点から、タブ1のコメントはもちろんタブ2のコメントと同じです。

新しいタブの作成などで新しいセッションを開始するためのトリックはありますか?私はこれらすべてにかなり慣れていないので、明らかにばかげているかもしれません..これを修正する方法のポインタは大歓迎です-コメントを実装するためのより良い方法であっても-ページを更新せずにコメントを追加することは必須です。

よろしく、キツ

4

1 に答える 1

2

セッションデータがCookieによって制御されているため、画面ごとではなくブラウザごとであるという古典的な問題が発生しています。

1つのアプローチは、画面に非表示のフィールドを表示することです。画面を作成するためのgetを処理するときは、これを一意の値に設定し、その値をセッションデータへのキーとして使用します。

次に、ajaxリクエストで値を返します。これにより、各画面のリクエストはセッションデータの異なる部分で処理されます。

于 2012-08-20T23:15:57.120 に答える