kenlistian

勤学多思

  IT博客 :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  412 随笔 :: 0 文章 :: 23 评论 :: 0 Trackbacks

在php.ini中修改

设置register_globals=ON ;//  [Off]可以直接传取php中的变量.

不过这个方法是不够安全.如下ini所说.

-> register_globals = Off [安全,性能]
; 不再为输入数据注册全局变量(POST, GET, cookies, 环境变量, 服务器变量)
; 不要使用$foo,而要使用$_REQUEST["foo"](包含任何通过请求传送的数据,即:POST, GET, cookies, 环境变量, 服务器变量),
; 或使用指定的$_GET["foo"], $_POST["foo"], $_COOKIE["foo"], $_FILES["foo"](不包含在$_REQUEST数组中), 这取决于请求来自何处。
; 同时,你可以查看import_request_variables()函数(将 GET/POST/Cookie 变量导入到全局作用域中)。
; 注意,register_globals将在下一个版本中被废除(默认关闭),因为它总是带来太多的安全问题。

  但是老代码中若存在非_POST类型包括的代码,可以直接通过在inc文件中添加变换不用修改以前变量.而且这样更可以延续以前的对变量处理方式.

foreach(Array('_GET','_POST','_COOKIE') as $_request)
    {
          foreach($$_request as $_k => $_v)  {
                ${$_k} =  $_v;       //直接将$_Post,$_Get等中的变量替换出来.

      }
    }

当然必须考虑到处理post,get的数据,故对$_v作为参数传入处理函数.

function MagicQuotes(&$svar) {
       if(!get_magic_quotes_gpc()) {
           if( is_array($svar) ) {
               foreach($svar as $_k => $_v)
                    $svar[$_k] = MagicQuotes($_v);
             } else
               $svar = addslashes($svar);
         }
        return $svar;
     }


   则需要修改上为即可.

  ${$_k}=MagicQuotes($_v);

posted on 2010-01-23 15:58 kenlistian 阅读(1098) 评论(0)  编辑 收藏 引用 所属分类: WEB
只有注册用户登录后才能发表评论。