私は一連の調査を次々と行っています。ある調査の後、バックスペースを押して前の調査に戻り、新しい情報を追加して再送信する人もいるようです。どうすればこれを止めることができますか? ある種の Javascript スクリプトが必要だと仮定しています。
私はこれを見つけまし た 現在のフォームから戻るためのバックスペースの防止
しかし、誰かが意図的にそれを行っている場合、それは役に立たないようです。
私は一連の調査を次々と行っています。ある調査の後、バックスペースを押して前の調査に戻り、新しい情報を追加して再送信する人もいるようです。どうすればこれを止めることができますか? ある種の Javascript スクリプトが必要だと仮定しています。
私はこれを見つけまし た 現在のフォームから戻るためのバックスペースの防止
しかし、誰かが意図的にそれを行っている場合、それは役に立たないようです。
戻るボタンを壊さないでください。これはブラウザのHCI ルールに違反しています。
これを適切に行うには、実施する調査の各インスタンスに一意の ID を割り当てる必要があります。次に、調査が開始されたときに、ID が以前に提出されていないことを確認します。
サーバー上の調査でユーザーの進行状況を追跡していると思います(Cookieを介して)。ユーザーが調査のページ N に進んでいて、ページ N-1 に戻って回答を変更してほしくない場合は、ユーザーが N- にアクセスしようとしても、ページ N を表示することができます。 1ページ。これにより、ユーザーが戻るボタンを押してN-1ページに戻ることができます(バックスペースボタンをブロックしてもユーザーはできることです)
$_SESSION を作成し、各フォームが完成するたびにそれを更新することで、PHP でそれを行う方法を確認できます。
各ページの冒頭で、セッションが正しい調査と相関していることを確認してください。
例を挙げてみます。
先頭ページ
$_SESSION['status'] = 1; // allowed to view survey 1
if($_SESSION['status'] != 1){
header('Location: /page' . $_SESSION['status'] . '.php');
exit();
}
// your survey
// clicks submit
// goes to 2nd page
.... 2ページ目(2回目のアンケート)
$_SESSION['status'] = 2; // updates the status to show is on the 2nd page
if($_SESSION['status'] != 2){
header('Location: /page' . $_SESSION['status'] . '.php');
exit();
}
// your survey
// clicks submit
// goes to 3rd page.. etc