0

私は何人かの学生のためにクイズ (php と mysql) をやっています.クイズは彼らが見なければならないビデオに基づいています..

順序は次のとおりです。
1) ユーザーごとに固有の Web ページを入力します
2) ユーザーが視聴するビデオを含むページにアクセスします...
3) ページの下部に [クイズに答える] ボタンがあります
4)ボタンをクリックすると、クイズのあるページに送信されます

ここで問題が発生します。ユーザーがビデオを再度見ないようにしたいのですが、戻るボタンを押すと、ビデオが再び表示されます。

私はmysql dbのビデオテーブルでビデオをブロックしていますが、ビデオはキャッシュされているか何かであるため、ユーザーが戻るボタンを押したときにビデオを再度見ることを防ぐアプローチではありません.... これを達成する方法のアイデアはありますか??

助けていただければ幸いです......

4

1 に答える 1

0

expired_quizzesあなたの最新のコメントから確認すると、少なくとも 3 つの列を持つテーブルがありquiz_idquiz_filenameブール値がis_active. また、テーブルを a に正規化するuseridので、ユーザー A がそれを表示してクイズに答えた場合でも、ユーザー B は引き続きビデオを見ることができます (ただし、友人との不正行為は簡単になります)。コードや構造を見ずに何が起こっているのかを正確に知ることは困難ですが、次のいくつかを確認してみてください。

検索に基づいてクイズを検索し、Web ページで変数 $_GETを使用している場合、Web ページにアクセスすると、常にクイズが読み込まれます。したがって、次のことを考慮してください。

http//www.yourwebpage.com/?quizfilename=viewablequiz.mp4

PHP の指示に応じて、常にロードされますviewablequiz.mp4。それを防ぐために2つの推奨事項があります。

  • ロードしないでください$_GET['quizfilename']。代わり$_GET['quizid']に、次のような追加の検索パラメーターを使用して、クエリからファイル名を読み込んで呼び出します。

    'SELECT * FROM expired_quizzes WHERE quiz_id='{$_GET['quizid']}' AND is_active=1 LIMIT 1;'

次に、row['filename']PHP コードを返すか、結果が見つからない (有効期限が切れていないクイズがない) 場合は、ユーザーへの応答で処理します。

  • AJAX 経由でビデオを読み込みます。上記と同様のクエリを PHP 側で使用しますが、読み込み後にルックアップが必要なため、画面を更新しても何も読み込まれません。

不正行為を防ぐために、ビデオが表示されるたびにタイムスタンプとユーザー ID を記録する別のテーブルも用意する必要があります。誰が同時にテストと表示を行ったかを確認することで、後で不正行為を検出するのに役立ちます。

もちろん、常に SQL インジェクションから保護し、ユーザー入力を直接 SQL ステートメントに入れないでください。

より詳細な分析を行うには、関連する PHP、HTML、および SQL のみを質問内に投稿する必要があります。

于 2012-11-26T15:31:01.810 に答える