所以我是PHP的新手,我正在尝试创建一个表单。我接受一堆参数,并希望在同一页面中处理它们。如果没有一个巨大的if-else包含整个页面if($_POST)
,我不知道如何做到这一点。这似乎并不理想。
此外,我发现我做了很多以下事情。有没有办法缩短这个?名字都保持不变。
$name = $_REQUEST["name"];
$gender = $_REQUEST["gender"];
$age = $_REQUEST["age"];
我有很多行正在这样做,而且看起来非常低效
答案 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
。访问变量时使用正确的数组,或者人们可以发送您不期望的数据。