1

步骤.php

<?php        
    function allowed_in($steps){        
    $steps = array('Text1.php', 'Text2.php', 'Text3.php');                
    $latestStep = $_SESSION['latestStep'];            
    }        
?>

文本1.php:

<?php
   if(allowed_in($steps)){      
      //all code in the create_session.php             
   }
?>

我正在尝试将 php 变量存储到会话变量并访问另一个页面中的函数,但出现以下错误:

注意:未定义变量:第 28 行中的步骤
注意:未定义索引:第 49 行中的最新步骤

我只需要询问如何解决这些错误。我需要一个if(isset())变量$_SESSION吗?

更新:

以下是完整代码:

    <?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

    if(isset($_SESSION['latestStep'])){
   $latestStep = $_SESSION['latestStep'];
}
else{
   $latestStep = "";
}
    $currentStep = basename(__FILE__); 

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

    if ($currentIdx - $latestIdx > 1 ) {

       return 1;

    } else {

        return 0;

    }

    }

    ?>

    create_session.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   

    }

    ?>

我试图遵循的伪代码:

function allowed_in($pased_vars){

//your code

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

}

on included pages
<?php
//include file with code

if(allowed_in($vars)){
//allowed
}else{
//not
}
4

3 回答 3

2

您有一个用作 as 的未定义变量$steps和一个用作 的未定义数组索引$_SESSION['latestStep']

还有这个:

function allowed_in($steps) {
    $steps = array('Text1.php', 'Text2.php', 'Text3.php');

没有任何意义。您希望将一个变量$steps作为参数传递给函数,然后立即在函数范围内替换他的值?为什么要这么做?只是不要期望函数有任何参数并$steps在其中定义。

要解决索引问题,您可以使用isset()并处理未设置会话变量的情况:

if (!isset($_SESSION['latestStep'])) { /* what if not set? */ }

并记住session_start()在尝试访问$_SESSION变量之前始终使用。

对于未定义的变量错误:

<?php
   if(allowed_in($steps)){      
      //all code in the create_session.php             
   }
?>

表示$steps未定义。$steps = ...在将其作为参数传递给函数之前,我看不到您定义的任何地方allowed_in。那就是问题所在。

我建议您简单地定义allowed_infunction allowed_in()并将上面的代码称为:

if (allowed_in()) {
    ...
}
于 2013-01-04T13:11:30.790 回答
0

你想做什么?检查这些: -

1)首先,您没有向页面返回任何内容。那么如何检查条件?

2)您是否将该页面包含在另一个页面中?

3) 检查你在哪里定义了会话变量 $_SESSION['latestStep']

4) 检查是否启动了会话 session_start()。

5) 您在steps.php 中定义$steps 数组。那么你从 text1.php 传递给函数 allowed_in 的内容是什么?

于 2013-01-04T13:10:07.513 回答
0

采用isset

你可以这样做:

if(isset($_SESSION['latestStep'])){
   $latestStep = $_SESSION['latestStep'];
}
else{
   $latestStep = "";
}

http://php.net/manual/en/function.isset.php

于 2013-01-04T13:12:00.523 回答