我有几个PHP脚本具有以下结构:
$count = $_GET['count'];
$sort = $_GET['sort'];
$car = $_GET['car'];
$driver = $_GET['driver'];
...
$SQL = "SELECT car, truck FROM autos WHERE car='$car' AND truck='truck'";
...
另一个脚本将是相同的脚本,而不是汽车,卡车或表autos我将使用另一个表,不同的变量和可能更多或更少的变量。有没有一种方法或一个好的设计模式可供使用,这样我只需编写一个这个脚本的实例副本15个左右我可能不得不写。
答案 0 :(得分:2)
当与不完美的代码结合使用时,这会产生安全隐患,但我认为这对您来说不是问题。
extract($_GET, EXTR_SKIP);
echo $car;
使用extract的好处是可以指定发生名称冲突时的行为。您可以考虑使用EXTR_PREFIX_ALL
标记。
或者,只需制作一个白名单,这是最好的imo。
$allowed = array('car', 'count');
$vars = array_intersect_key($_GET, array_flip($allowed));
extract($vars);
答案 1 :(得分:1)
您可以动态设置这样的变量:
$string = 'varName';
$$string = 'Hello World'; // $$string is $varName
echo $varName; // returns 'Hello World'
答案 2 :(得分:1)
你可以这样做,
foreach(array('count','car','driver', 'sort') as $v){
$$v = $_GET[$v]
}
或者,
foreach($_GET as $k => $v){
$$k = $v
}
稍后也可以通过在php.ini
中启用 register_globals 来实现。但这是危险。