有没有办法自动化(或至少自动化某些过程)从存储在$_POST
或$_GET
超全球的表单中提取数据?
我知道您可以使用foreach循环和其他类型的循环遍历数组,以便对每个键/值对执行某些操作,但有很多时候我有其他代码需要该数据,但是无法正常工作在一个foreach循环里面。
编辑:这是我能想到的一个例子。假设我有一大堆发布的数据,并希望将其插入数据库。据我所知,做这样的事情是不可能的,因为我需要在每个循环中将值插入到不同的列中:foreach($array as $key => $value) {
mysql_query(INSERT INTO table (somecolumn) VALUES($value);
}
另外,我真正想做的另一件事是从发布的数据中获取所有值,并以某种方式将它们分配给变量;有点像extract()
但没有覆盖其他变量的问题。我能想到的唯一办法是以某种方式将数据放入数组中,但我不确定这是否更有效:
$data = array();
foreach($array as $key => $value) {
$data[$key] = $value;
}
我能想到的最后一种情况是我必须在foreach循环之外使用这些数据。如果我修改我的代码以使所有内容都在foreach循环中执行,那么我只能保留与循环内部的表单数据有关的所有内容。如果变量和/或常量是在循环内部定义的,那么它们不能在它外面访问,对吗?我最近一直在使用Java,并习惯了更严格的范围和严格的处理变量的方法:)
我一直在阅读有关extract()
方法的内容,但使用(覆盖变量,安全漏洞等)看起来有点危险。
对于处理大量数据的其他人(比方说25个以上的表单字段),你是如何做到的?我厌倦了一遍又一遍地分配像$data = $_POST['somedata']
这样的变量来在其他地方使用它们......
谢谢!
答案 0 :(得分:2)
我知道你可以遍历 带有foreach循环和其他的数组 各种循环来做某事 每个键/值对,但有 很多次,我有其他代码 需要这些数据,但不会 在foreach循环中工作时 所有
你有这种情况的例子吗?
我一直在读关于提取物() 方法有点,但看起来有点像 使用危险的东西 (覆盖变量,安全性 洞等)。
是的,不要使用它。这实际上在以前版本的PHP中使用了很多,并且它引起了很多安全问题。
对于处理大量的其他人 数据量(比方说25+表格 领域),你是怎么做到的?我累了 分配变量,如$ data = $ _POST ['somedata']一遍又一遍 在别处使用它们......
我通常将许多表单字段分成类似的功能组(名称,数字,日期等)并以这种方式处理它们。说实话,我的数据库中存在更多未检查数据的问题,然后检查了大量的表单字段。
答案 1 :(得分:0)
让事情变得更好。在您的html表单和数据库中,如果您有一个元素'email',那么请确保与您的表匹配,即没有名为'user_email'的数据库表。
隔离那些你只需要验证的项目,检查它们,将它们添加回$ _POST数组 - 或者相应地失败或中止。
$_POST['web'] = {do your cleansing here, add any missing http:// kinda thing}
删除任何可能已进入$ _POST数组的提交按钮。
unset($_POST['submitMe']);
然后做相当于:
$db->saveNew($_POST);
其中$ db是一个位于PDO上的轻微层,它自动且无误地使用Prepared Statements来转义和保护您的数据库。
您可以让$ db类获取一个ini文件,该文件确定每个表所需的变量类型。