任何更简单的方法来$ name = $ _REQUEST [“name”];?

时间:2011-04-27 11:38:53

标签: php html forms

所以我是PHP的新手,我正在尝试创建一个表单。我接受一堆参数,并希望在同一页面中处理它们。如果没有一个巨大的if-else包含整个页面if($_POST),我不知道如何做到这一点。这似乎并不理想。

此外,我发现我做了很多以下事情。有没有办法缩短这个?名字都保持不变。

$name = $_REQUEST["name"];
$gender = $_REQUEST["gender"];
$age = $_REQUEST["age"];

我有很多行正在这样做,而且看起来非常低效

7 个答案:

答案 0 :(得分:1)

你正在做什么过程if..else ..如果你必须发布代码,以便我们可以告诉你如何缩短它。

您可以使用提取函数来避免为每个变量赋值。

extract($_POST);

但请注意,如果命名与输入控件相同,则可以覆盖现有变量。

答案 1 :(得分:1)

您可以使用extract()功能执行此操作。但它有一个安全缺点:如果有人将变量添加到POST标题,则可以覆盖现有变量。

编辑:hsz的解决方案更好

答案 2 :(得分:1)

停止使用$ _REQUEST,因为它是$ _COOKIE,$ _POST和$ _GET的组合。 这成为一种安全风险。

答案 3 :(得分:0)

您应该使用$_REQUEST而不是$_POST

$keys = array('name', 'gender', 'age');
foreach ( $keys as $key ) {
  if ( isset($_POST[$key]) ) {
    $$key = $_POST[$key];
  }
  // optional:
  else {
    $$key = ''; // default value
  }
}

答案 4 :(得分:0)

答案 5 :(得分:0)

第一件事:转过身来。不要做

if ($_POST) {
 // Your handling code
} else {
 echo "No data!";
}

DO

if (!$_POST) {
 die("No data!");
}
// Your handling code

答案 6 :(得分:0)

您可以使用extract(),但这意味着您在当前范围内引入了许多您(可能不知道)的变量。

我的建议是循环遍历你的数组并对其中的变量做一些事情(例如 - 验证)

foreach ($_POST as $key => $valu) {
   //do something with the variables
}

另外,除非你真的想检查$ _GET,$ _POST和$ _COOKIE,否则不要使用$_REQUEST。访问变量时使用正确的数组,或者人们可以发送您不期望的数据。