免责声明:我了解这些功能位于待办事项弃用列表的顶部。所有的警告都只是在向合唱团宣讲。
反正。我发现自己在一家使用 mysql_* 函数的公司工作。这显然还不够糟糕,因为整个事情都没有mysql_real_escape_string()
“伟大”。所有的用户输入都是未经处理的,所以自然而然地成为新的代码猴子,我的工作是将它合并到所有 4.93g 的 php 脚本中。FML“所以”,我心想,“如果我只是$_REQUEST
在每一页上取消设置数组(不知道为什么,但他们从未使用过,$_POST
或者$_GET
在整个程序中使用过一次,他们确实$_REQUEST
在任何地方都使用过。)然后用mysql_real_escape_string
? 重置它。”。对我来说,这肯定胜过 1000000000 行代码。所以我坐下来写了函数来做这件事。这是我所在的位置:
/*lets say input is dirty and input2 is boy*/
echo "<br><pre>";print_r($_REQUEST);echo "</pre><br>";
$tempString = implode(',', $_REQUEST);
$tempString2 = implode(',', array_keys($_REQUEST));
$tempArray = explode(',', $tempString);
$tempArray2 = explode(',', $tempString2);
$count = count($_REQUEST);
echo "<br><pre>";print_r($tempArray);echo "</pre><br>";
echo "<br>";
echo "<br><pre>";print_r($tempArray2);echo "</pre><br>";
unset($_REQUEST);
$_REQUEST = array();
for($i = 0; $i < $count; $i++){
$_REQUEST[$tempArray2[$i]] = "mysql_real_escape_string(".$tempArray[$i].")";
}
echo "<br><pre>";print_r($_REQUEST);echo "</pre><br>";
据我所知,它正在工作!:
Array
(
[input] => dirty
[input2] => boy
)
Array
(
[0] => dirty
[1] => boy
)
Array
(
[0] => input
[1] => input2
)
Array
(
[input] => mysql_real_escape_string(dirty)
[input2] => mysql_real_escape_string(boy)
)
但坦率地说,这似乎太容易了。我看到的直接问题是
- 它只适用于
$_REQUEST[]
- 您必须在每个页面的顶部对其进行硬编码,即使您将其设置为全局函数并包含它
- 如果一件事出了差错...
- mysql_* 函数很糟糕,即
mysql_real_escape_string
作为旁注,我什至无法告诉您我为从 PDO 转换所有内容而奋斗了多少次,因为您可以想象他们不喜欢所需的时间。
所以
我想我把这个带到你们这里是为了,第二双眼睛。您对此有什么直接的问题吗?我错过的任何其他直接问题?如果你们喜欢这个,无论如何,我确信还有其他人可以使用这样的东西(如果你构建它,他们会来的),我会继续在 github 上通过它并将它的工作到我的 shcedule 中,谢谢: )