PHP:有一种安全的提取方式($ _ POST)

sup*_*led 11 php

有没有一种安全的方法来自动分配发布数组中的键?以下是错误方式的两个例子......

foreach( $_POST as $key => $value ) {
     $$key = $value;
}
Run Code Online (Sandbox Code Playgroud)

要么

extract($_POST)
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法,或者最好是编码:

$foo = $_POST('foo');
$bar = $_POST('bar');
....
Run Code Online (Sandbox Code Playgroud)

对于我表格中的所有50个输入?

(发布的信息将被插入到数据库中).

mar*_*rio 17

一次性提取所有输入字段的另一种谨慎方法是:

extract( $_POST, EXTR_OVERWRITE, "form_" );
Run Code Online (Sandbox Code Playgroud)

这样,所有的输入变量将被调用$form_foo,并$form_bar至少.避免在全球范围内这样做 - 不是因为全球是邪恶的,而是因为没有人在那里清理.

但是,由于大部分是在局部范围内执行此操作,因此您可以应用htmlentities,例如,您需要所有字段仅用于输出:

extract(array_map("htmlspecialchars", $_POST), EXTR_OVERWRITE, "form_");
Run Code Online (Sandbox Code Playgroud)

  • 变量本身绝不是安全威胁.这取决于你如何使用它们.将它们放在数组中或在本地化名称下没有任何区别.当然,除非你使用具有许多责任和行为的怪物函数,否则这样的`$ form_xyz`肯定会导致混淆应用程序流. (2认同)

You*_*nse 9

没有一个理由这样做.
要处理用户输入,数组比单独的变量好100倍