我已经使用这个PHP代码来逃避我传递的所有参数:
<?php
foreach ($_GET as $key => $value) {
if(!is_array($value)){
$_GET[$key] = mysql_real_escape_string($value);
}
}
$offset = (isset($_GET['offset']) ? $_GET['offset'] : null);
echo "Offset is " . $offset;
?>
在这个例子中,无论我传递的是什么&#34; offset&#34;它返回&#34;偏移是&#34;。如果我删除了foreach循环,它会返回&#34; Offset是Hello&#34; (或者我通过的任何东西)。
为什么fornext循环会丢失参数 - 我已经使用了几个月的代码而且它以前一直都有效!
答案 0 :(得分:0)
此代码正常运行:
<?php
$_GET['offset'] = 'Hello';
foreach ($_GET as $key => $value) {
if(!is_array($value)){
$_GET[$key] = mysql_real_escape_string($value);
}
}
$offset = (isset($_GET['offset']) ? $_GET['offset'] : null);
echo "Offset is " . $offset;
?>
结果:
Deprecated: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in ... on line 5
Offset is Hello
正如您所看到的,价值是正确的,所以可能在您的情况下$_GET['offset']
包含其他内容,顺便提一下您使用mysql_
已弃用的功能。
答案 1 :(得分:0)
是的,愚蠢的我,我没有在MySQL和解析参数之间建立连接。它工作的所有其他代码我首先连接到MySQL数据库。
感谢。