ошибка с PHP GLOBALS - PullRequest
       34

ошибка с PHP GLOBALS

1 голос
/ 08 декабря 2011

Я пытаюсь сохранить массив в 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 ]

1 голос
/ 08 декабря 2011

Почему бы просто не использовать собственный php $_SESSION для хранения данных сеанса:

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

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

Также, выполнив это: $GLOBALS['session_data'] = $session_data; вы устанавливаете значение, равное себе (которое неявно), если $session_data находится внутри функции.

0 голосов
/ 08 декабря 2011

В большинстве случаев вы должны передавать данные в другой файл так же, как вы передавали их в текущий файл.

Итак, если вы используете GET для file_1.php, скорее всего, вам потребуется передать тот же параметр в file_2.php.

Это более распространенный способ, в отличие от сеансов, которыеимеют очень ограниченное использование.

0 голосов
/ 08 декабря 2011

Другой файл не видит переменную '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'];
...