0

下面我试图创建一个功能,如果用户在当前页面上,则数组中的所有其他页面都被锁定(无法访问),在用户完成当前页面之前无法访问其他页面。上。

下面是处理 6 个 php 脚本的代码:

        <script type="text/javascript">

$(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>

    <?php

    $steps = array('create_session.php', 'QandATable.php', 'individualmarks.php', 'penalty.php', 'penaltymarks', 'complete.php');

    // Track $latestStep in either a session variable
    // $currentStep will be dependent upon the page you're on

    $latestStep = $_SESSION['latestStep'];
    $currentStep = basename(__FILE__); 

    $currentIdx = array_search($currentStep, $steps);
    $latestIdx = array_search($latestStep, $steps);

    if ($currentIdx - $latestIdx > 1 ) {
        ?>
    <div class="boxed">
    <a href="<?= $pages[$currentPages+1] ?>">Continue</a>
    <br/><a href="create_session.php" id="createLink">Create New</a>
    </div>

    <?



    } else {
        // let the user do the step
    }

    ?>

所以这里有一个可能发生的例子:

  1. 用户在penalty.php页面上,因此阵列中的其他页面被锁定
  2. 如果用户尝试访问另一个页面,则会显示上面显示的 div 框:

    • 如果用户选择Continue链接,那么它应该将用户导航到他们应该在哪个页面上的penalty.php页面

    • 如果用户选择Create New链接,那么它应该导航到create_session.php并执行 jquery/ajax 方法并导航到removesession.php后台脚本

现在上面的代码在一个名为的 php 脚本中steps.php,它被外部化,以便可以使用它来访问它include(steps.php),它将包含在数组中的 6 个 php 脚本中,以便这些脚本可以访问这些页面。

现在我的问题是我需要在这段代码中再做一件事,它处理我在上面代码中的 if/else 语句,并在其他脚本中包含代码:

使用返回值,如果用户可以执行该步骤,则返回 1,如果不能,则返回 0。然后在每个页面上,您将调用此函数,并根据返回值显示页面或显示错误

我的问题是,我似乎不太了解如何编写上述引文中提到的内容。有人可以展示 if/else 语句应该是什么样子,以及应该在 6 的 php 脚本之一中包含哪些代码,以便能够调用该脚本中的函数?

更新:

步骤.php

<?php

function allowed_in($steps){

$steps = array('create_session.php', 'QandATable.php', 'individualmarks.php', 'penalty.php', 'penaltymarks', 'complete.php');

// Track $latestStep in either a session variable
// $currentStep will be dependent upon the page you're on

$latestStep = $_SESSION['latestStep'];
$currentStep = basename(__FILE__); 

$currentIdx = array_search($currentStep, $steps);
$latestIdx = array_search($latestStep, $steps);

if ($currentIdx - $latestIdx > 1 ) {

   return 1;

} else {

    return 0;

}

}

?>

创建会话.php:

if(allowed_in($steps)){

//all code in the create_session.php

}else{
?>

<div class="boxed">
  <a href="<?= $pages[$currentPages+1] ?>">Continue</a>
<br/>
<a href="create_session.php" id="createLink">Create New</a>
</div>

<?php   

}

?>
4

1 回答 1

1

非常伪代码:

function allowed_in($pased_vars){

//your code

if($foo){
    return 1;
}else{
    return 0;
}

}

在包含的页面上

<?php
//include file with code

if(allowed_in($vars)){
//allowed
}else{
//not
}
于 2013-01-04T01:44:34.817 回答