【问题标题】:PHP $_POST[$variable] in an included file, doesn't recognize the $variable and creates an error message包含文件中的 PHP $_POST[$variable] 无法识别 $variable 并创建错误消息
【发布时间】:2011-07-17 15:28:34
【问题描述】:

我想使用“动态”$_POST,我不知道我是否使用了正确的术语,但换句话说,我想在一个函数中使用例如 $_POST[$dynamic_variable]包含的文件。因为 $dynamic_variable 无法识别,或者因为我不能在包含的文件中使用 $_POST[something],所以它不起作用,并且我收到类似 Undefined variable: lastname in filename.php 的错误消息。

在包含的文件中以及当 $_POST[name] 是可变的时使用 $_POST 的安全方法是什么?

谢谢!

///// 更新 - 一段代码 ///////

[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];
  }
}

【问题讨论】:

  • 一个函数通常比读取$_POST数组更好。而且我不确定你为什么说你不能在代码的任何部分使用$_POST[$dynamic_variable],只要设置了$dynamic_variable。我想说我们需要有关您当前代码的更多详细信息。
  • 代码将帮助我回答这个问题。
  • 我放了一些代码,代码会改进,只是想举个简单的例子。
  • 我太坏了。特别糟糕。我在表单元素中添加了 ids、styles、calsses,但忘记了名称。对不起大家,真是个错误...大声笑:(
  • 谢谢大家的帮助

标签: php variables post


【解决方案1】:

$_POST 数组在所有包含的 PHP 文件中都可用。通常,$dynamic_variable 也可用,如果您这样做:

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

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

但是当在函数或类中声明$dynamic_variable 时,您无法在外部访问它。您也可以将其声明为global 或将其作为参数传递。另请阅读有关variable scope 的文档。

【讨论】:

  • 它不适合我。与您的示例相比,唯一的区别是 $dynamic_variable 是一个数组,其中管道 (|) 分隔不同的值。我调用 doThisFunction($dynamic_variable);。 doThisFunction($dynamic_variable) 在包含的文件中。我做了一个分解来分离这些值,所以 $dynamic_variable 现在是 $dynamic_arr 并且 $_POST 名称是 $dynamic_arr[2]。所以我试图在函数中使用 $_POST[$dynamic_arr[2]] 。我也尝试过,例如$post_name = $dynamic_arr[2]。并尝试获取 $_POST[$post_name] 但它不起作用。
  • 创建一个var_dump($_REQUEST); 和一个var_dump($dynamic_arr); 并检查你是否合适。
  • 做一个 var_dump 让我意识到我犯了一个大错误......谢谢你的想法
【解决方案2】:

如果使用这样的全局变量是否明智,我不会写。
您的问题是您尝试访问不存在的变量,如错误消息所述。

为了避免错误信息,你可以这样做:

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

【讨论】:

  • 我知道我可以避免错误消息,我想做的是让它工作。我不能在包含文件中的函数中使用 $_POST[something]。 “某物”是可变的,我不知道名称,如果我知道,我会用函数调用它。使用 isset 函数将使其安全,是的,但它并没有告诉我如何“到达”函数中的 $_POST...
  • 你的问题不在于$_POST,而是你放在括号中的变量中的值,因为他不是全局的($_POST是)。
  • 你确定吗?我认为问题与 $_POST 而不是其中的 $variable 有关。即使我使用 $_POST['field_name'] (我知道我在表单中使用的字段名称)手动测试它,它甚至都不起作用。所以它根本没有到达函数中的 $_POST 。我必须在代码中添加什么才能“全局”访问 $_POST 吗?
  • 我 100% 确定,检查一下你是否真的发送了那个变量/值。 echo 在 POST 中使用变量前一行。
  • 它确实适用于变量,它在我回显时显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 2012-12-30
  • 1970-01-01
相关资源
最近更新 更多