3

以下の質問をすべての主要なブラウザOpera、Internet Explorer、Chrome、Safari、Firefoxで機能させたい

Text1.php, Text2.php, Text3.phpユーザーが試験を完全に作成できるようにするためにページの順序に従う必要があるアプリケーションを作成したいと思います。

問題は、ユーザーがいつでもbackまたはforwardブラウザのボタンをクリックしたり、ページのURLを入力して別のページにアクセスしたりできることです。

だから私の質問はこれです:

  1. ユーザーがbackまたはforwardブラウザのボタンをクリックすると、次のことを示すプロンプトボックスまたは小さなウィンドウが表示されます。

    評価を作成するときにこのページを離れることは想定されていません。ページを離れたい場合は、「メニュー」ページに戻り、この試験の詳細がすべて失われます。以下のこのリンクをクリックしてください。

    評価を残す

    現在の評価の作成を継続したい場合は、以下のリンクをクリックしてください。

    評価を継続する

  2. ユーザーが評価作成ページのいずれかにいてText1.php, Text2.php OR Text3.php、ユーザーがURLのWebアドレスを変更して別のページにアクセスしようとすると、同じウィンドウまたはプロンプトボックス以上が表示されます。

私の質問は、URLまたはブラウザボタンが使用されているときにボックスが表示され、ユーザーがリンクをクリックした場合に現在のページに留まるか、ユーザーがリンクをクリックした場合にContinue Assessment移動できる場合に、これが可能であるということです。誰かがこれをどのように達成できるかについてのサンプルを提供できますか?私はそれがすべての主要なブラウザで動作する必要があります。menu.phpLeave Assessment

ありがとう

4

5 に答える 5

2

セッションでサーバー側のCookieを設定できます(PHPはそれをうまく処理できます)。たとえば、まだ使用可能なページを含む配列や、すでに表示されているページを含む配列などです。

次に、ページが読み込まれるたびに(これをインクルードファイルに配置できます)、スクリプトは(サーバー側で)最後のページのユーザーが評価に含まれていたことを確認します。ユーザーが戻ろうとすると、スクリプトは次のように通知します。評価に戻ることはできません」。

JavaScriptを使用すると、onclickイベントの後に進む前に、必要な警告をユーザーに表示できます。

取引は次のとおりです。-セッションにユーザーIDを保存します-ページステータスまたは次のページのみを示す「ポンター」を含む配列をアタッチします。したがって、ページ1が読み込まれると、ポインターは「page2」文字列と最初の検証では、ユーザーがページ1やページ3などを再度ロードすることはありません。- それで全部です。

英語について申し訳ありません。アメリカ人ではありません。;)

于 2013-01-13T21:40:07.447 に答える
0

最善の策は、javascriptsonbeforeunloadイベントを使用することです。

window.onbeforeunload = function() {

}
于 2013-01-07T02:15:12.913 に答える
0

これを使用して、[OK]と[キャンセル]ボタンのあるダイアログをポップアップできます-

window.onbeforeunload= 'Your text here';

ブラウザはセキュリティ上の理由からボタンを許可していないため、ボタン(割り当てを残すなど)を配置することはできません。

onbeforeunloadイベントはw3標準で指定されていないため、standard-strictである一部のブラウザーはそれをサポートしていません。よく知られている例はOperaです。

于 2013-01-12T14:14:28.597 に答える
0

最も便利なブラウザ側のソリューションはそのようなもののwindow.beforeunloadようです。これから説明するものに加えて、それを使用することをお勧めします。

PHPページの通常のロジックの一部として、ユーザーのセッションで現在のページを見たことを示すフラグを設定します。したがって、Page1.phpあなたが設定するかもしれませんseen1Page2.phpあなたが設定するかもしれませんseen2、等々。

さて、重要な部分です。各スクリプトの上部で、フラグを設定したり、ユーザーに何かを送り返したりする前に、セッション内のフラグが本来あるべきものと一致するかどうかを確認してください。したがって、たとえば、Page1.phpフラグが設定されていないPage2.phpことを期待します。フラグは設定されているが、またはは設定されてseen1いないことを期待しseen2ますseen3

フラグが一致しない場合は、フラグを使用して、ページを表示する代わりに、フラグを表示するページを決定し、そこにリダイレクトすることができます。必要に応じて、セッション変数を設定して、これが発生したことを警告することができます(警告を表示した後でクリアします)。

これが機能するためには、ブラウザやその他のものがページをキャッシュするのを防ぐために必要なヘッダーなどを送信する必要があることに注意してください。

于 2013-01-13T21:31:23.223 に答える
0

セッション変数を設定してみませんか

$_SESSION['on-page']="page1.php";
if($_SERVER['PHP_SELF']!="page1.php"){ die('Please go back and finish the previous page.'); ?>

そんな感じ?

于 2013-01-14T01:02:24.173 に答える