PHP $ _POST [$ variable] во включенном файле не распознает переменную $ и создает сообщение об ошибке - PullRequest
1 голос
/ 17 июля 2011

Я хотел бы использовать «динамические» $ _POST, я не знаю, правильно ли я использую термин, но другими словами, я хотел бы использовать, например, $ _POST [$ dynamic_variable] в функции, которая находится ввключенный файл.Поскольку переменная $ dynamic_variable не распознана или я не могу использовать $ _POST [что-то] во включенных файлах, она не работает, и я получаю сообщение об ошибке типа Неопределенная переменная: lastname в filename.php.

Как безопасно использовать $ _POST во включенных файлах и когда переменная $ _POST [имя] является переменной?

Спасибо!

///// updated - кусок кода ///////

[code.php]

include("functions.php");

$test_arr = array(
"10|field_name1|500",
"20|field_name2|750",
...
);

checkForm($test_arr);

[functions.php]

function checkForm($test_arr) {
  foreach ($test_arr as $test) {
    $test_details = explode("|", $test);
    $field_name = $test_details[1];
    echo $_POST[$field_name];
  }
}

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Массив $_POST доступен во всех включенных файлах PHP.Обычно, $dynamic_variable также доступен, если вы делаете это так:

$dynamic_variable = 'test';
include('include.php');

// in include.php: 
echo $_POST[$dynamic_variable];

Но когда вы объявляете $dynamic_variable внутри функции или класса, вы не имеете доступа к нему снаружи.Вы также можете объявить его как global или передать его в качестве параметра.Пожалуйста, прочтите также документацию о переменной области действия .

1 голос
/ 17 июля 2011

Я бы не стал писать, разумно ли использовать такие глобальные переменные или нет.
Ваша проблема в том, что вы пытались получить доступ к переменной, которая не существует, как говорится в сообщении об ошибке.

Чтобы избежать сообщения об ошибке, вы можете сделать:

if(isset($_POST[$your_var_name]){
   //do something with $_POST[$your_var_name]
}
...