PHP GLOBALS出错

时间:2011-12-08 18:48:31

标签: php globals

我正在尝试将数组存储在PHP GLOBAL中,如下所示:

// file_1.php

include 'functions/session_metrics.php';

$project_data = array();
$session_data = array();

if (isset($_GET["product"])) {

    $product = explode("|", $_GET["product"]);

    foreach ($product as $id) {
            list($project, $sessions) = getProductInfo( $id );
            $project_data[$id] = $project;
            $session_data[$id] = $sessions;
    }

    $GLOBALS['project_data'] = $project_data;
    $GLOBALS['session_data'] = $session_data;

}

现在来自另一个文件我试图像这样退休:

// file_2.php

$data= $GLOBALS['project_data']; 
print_r($data);

但我看到了错误:

Undefined Index: project_data...

我错过了什么?

3 个答案:

答案 0 :(得分:1)

为什么不使用本机php $_SESSION来存储会话数据:

$_SESSION['that'] = 'this';

echo $_SESSION['that']; //echoes `this`

同样通过这样做:$GLOBALS['session_data'] = $session_data;你设置的值等于它自己(隐含的),除非$session_data在函数内部。

答案 1 :(得分:0)

大多数情况下,您必须将数据传递到另一个文件,方法与将其传递到当前文件的方式相同。

因此,如果您对file_1.php使用GET,则很可能需要将相同的参数传递给file_2.php。

这种方式更常见,与使用非常有限的会话不同。

答案 2 :(得分:-1)

另一个文件没有看到' session_data'变量。使用像这样的全局变量也是非常危险的,这就是为什么PHP在PHP 5.4中完全将它从语言中删除并在PHP 5.3中弃用它。

如上所述,您应该使用$ _SESSION变量将信息从一个文件传递到另一个文件。

您可以通过以下方式实现:

# Start the sessions 
session_start();
#Set the session_data
$_SESSION['session_data'] = $sessions;
#retrieve data
$sessions = $_SESSION['session_data'];