ユーザーが試験を作成するには、次のページを通過する必要がある試験アプリケーションがあります。
- create_session.php
- QandATable.php
- 個人マーク.php
- ペナルティ.php
- 完全な.php
今私が心配しているのは、ユーザーがこれらのページのいくつかを完了することができるが、他のページを除外して試験の作成を放棄するか、上のページのいくつかを通過する試験の作成を開始してから、元に戻ることができることです。前のページまたは前のページ、または先に表示される他のページの URL を入力してページをスキップします。
だから私の質問は、ユーザーがページをスキップしたり、前のページに戻ったりするのを止める方法はありますか? つまり、試験を作成するには、上記の 5 ページを正確な順序で実行する正確な手順に従う必要があります。
たとえば、ユーザーが を使用している場合QandATable.php page
、create_session.php ページに戻ることはできませんか、またはQandATable.php
が正常に送信されるまで他のページにスキップすることはできませんか? つまり、現在のページ以外の他のページをロックアウトします。ユーザーがページにアクセスするcomplete.php
と、検査が完了しcreate_session.php
、最初のページであるため、ロックアウトから削除できます。
ユーザーが individualmarks.php などのページを放棄して、ユーザーが直接 indivdualmarks.php のページに戻る場合は問題ありませんが、別のページにアクセスしようとすると、プロンプト ボックスまたは何かを送信することを考えています。同様の記載:
すでに作成中の試験があります。現在の試験の作成を続行するには、このリンクをクリックしてください (現在のページ ユーザーがオンになっているページへのリンク)
新しい試験を作成する場合は、このリンク (create_session.php ページへのリンク) をクリックしてください。
私が求めていることはそれほど単純ではないことはわかっていますが、ユーザーが各ステップ (各ページ) を正しい順序で実行しない限り、ユーザーが試験の作成を台無しにして、データを台無しにしないようにしたくありません。これをどのように達成できるかについての簡単なサンプルはありますか?
私はIE、Chromeで作業しています。サファリ、ファイアフォックス、オペラ
ありがとう
アップデート:
<?php
session_start();
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="stepsStyle.css">
<title>Follow Steps</title>
<script type="text/javascript">
//if user selects "Create New Assessment" Link, then use jquery/ajax below
//code below will access removesession.php where it will remove exam details which will be overwritten
$(function() {
var link = $("#createLink");
link.click(function() {
$.ajax({
url: "removesession.php",
async: false,
type: "POST",
success: function() {
window.location.href = link.attr("href");
}
});
//cancels the links true action of navigation
return false;
});
);
</script>
</head>
<body>
<?php
$steps = array('create_session.php', 'QandATable.php', 'individualmarks.php', 'penalty.php', 'complete.php');
$latestStep = $_SESSION['latestStep'];
// Track $latestStep in either a session variable or the DB and retrieve accordingly
// $currentStep will be dependent upon the page you're on
$currentIdx = array_search($currentStep, $steps);
$latestIdx = array_search($latestStep, $steps);
if ($currentIdx - $latestIdx > 1 ) {
?>
//set up a div box to display message on wether use should contine or not
<div class="boxed">
You already have an exam currently in creation, to continue with creating the current exam click on this link: <br/><a href="">Continue with Current Assessment</a>
<br/>
If you want to create a new exam then please click on this link: <br/><a href="create_session.php" id="createLink">Create New Assessment</a>
</div>
<?
} else {
// let the user do the step
}
?>
上記のコードに関するいくつかの質問があります。
- 変数は何
$currentStep
に等しくなければなりませんか? - ユーザーが現在の試験を続行したい場合、現在のページにリンクするにはどうすればよいですか?
- ユーザーがステップを実行できるようにするには、else ステートメントを空のままにしておく必要がありますか?