ページのロックとロック解除機能のようなものを作成しようとしています。ユーザーは次の順序でページを移動する必要があります。
$steps = array(1 =>'create_session.php',2 => 'QandATable.php',3 => 'individualmarks.php',4 => 'penalty.php',5 => 'penaltymarks',6 => 'complete.php');
したがって、ユーザーがあるべきページにいる場合、そのページのロックを解除する必要があります (つまり、ページのコードを表示する if ステートメントに一致する)。それらがオンになっていない場合、そのページはロックされます (else ステートメントは、Continue
ハイパーリンク付きの div を表示する場所で満たされます)。
問題は、ユーザーが正しいページにいるにもかかわらず、ユーザーがページを使用できるようにロックを解除する必要があるときに、ページがまだ「ロック」されていることです。現時点では、アクセスしたすべてのページがロックされているため、ユーザーが正しいページにいるときにページのロックを解除するにはどうすればよいですか?
以下は、create_session.php の例です。
<?php
session_start();
include ('steps.php'); //exteranlised steps.php
?>
<head>
...
</head>
<body>
<?php
if ((isset($username)) && (isset($userid))) { //checks if user is logged in
if (allowed_in() === "Allowed") {
//create_session.php code:
} else {
$page = allowed_in() + 1;
?>
<div class="boxed">
<a href="<?php echo $steps[$page] ?>">Continue with Current Assessment</a>
<?php
}
} else {
echo "Please Login to Access this Page | <a href='./teacherlogin.php'>Login</a>";
//show above echo if user is not logged in
}
?>
以下は完全な steps.php です。
<?php
$steps = array(1 =>'create_session.php',2 => 'QandATable.php',3 => 'individualmarks.php',4 => 'penalty.php',5 => 'penaltymarks',6 => 'complete.php');
function allowed_in($steps = array()){
// Track $latestStep in either a session variable
// $currentStep will be dependent upon the page you're on
if(isset($_SESSION['latestStep'])){
$latestStep = $_SESSION['latestStep'];
}
else{
$latestStep = 0;
}
$currentStep = basename(__FILE__);
$currentIdx = array_search($currentStep, $steps);
$latestIdx = array_search($latestStep, $steps);
if ($currentIdx - $latestIdx == 1 )
{
$currentIdx = $_SESSION['latestStep'];
return 'Allowed';
}
return $latestIdx;
}
?>