代码到real_escape所有参数清除所有参数

时间:2014-07-22 13:39:47

标签: php

我已经使用这个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循环会丢失参数 - 我已经使用了几个月的代码而且它以前一直都有效!

2 个答案:

答案 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数据库。

感谢。