1.目录的包含:
  .表示当前目录  
  ..表示上级目录  
用常量DISCUZ_ROOT确定根目录
define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));
DISCUZ_ROOT.'./include/forum.func.php'; //取到文件绝对路径来require_once();

2.$_COOKIE,$_POST,$_GET数组变量一起取得

/*
确定$_GET方式接纳链接传递的值
foreach($_GET as $_key=>$_value)
{
  $$_key=$_value; //相当于$action赋值,因为$_keyaction,$$_key$action,$_value为action的传入值如s1,s2...
}
*/

foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
 foreach($$_request as $_key => $_value) {
  $_key{0} != '_' && $$_key = daddslashes($_value); //daddslashes()过滤掉',防止注入
 }
}
function daddslashes($string, $force = 0) {
 !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); 
 if(!MAGIC_QUOTES_GPC || $force) {
  if(is_array($string)) {
   foreach($string as $key => $val) {
    $string[$key] = daddslashes($val, $force);
   }
  } else {
   $string = addslashes($string);
  }
 }
 return $string;
}

========补充:还是服务器字符过滤等方法======

<?php
//销毁以下变量
unset($_ENV,$HTTP_ENV_VARS,$_REQUEST,$HTTP_POST_VARS,$HTTP_GET_VARS,$HTTP_POST_FILES,$HTTP_COOKIE_VARS);
$Is_Gmqgg=get_magic_quotes_gpc();
if(!
$Is_Gmqgg)
{
    
//$_POST 经由 HTTP POST 方法提交至脚本的变量。
    
Add_S($_POST);
    
//$_GET 经由 URL 请求提交至脚本的变量。
    
Add_S($_GET);
    
//$_FILES 通过 HTTP POST 方法传递的已上传文件项目组成的数组。
    
Add_S($_FILES);
    
//$_COOKIE 经由 HTTP Cookies 方法提交至脚本的变量。
    
Add_S($_COOKIE);}

if(!
ini_get('register_globals') || !$Is_Gmqgg)
{
    @
extract($_POST,EXTR_SKIP);
    @
extract($_GET,EXTR_SKIP);
    @
extract($_COOKIE,EXTR_SKIP);
    @
extract($_FILES,EXTR_SKIP);
}

//检查$_POST和$_GET数组,如果其key值不是_开头且$$key变量没被设置过,设置相应$$_key值为$_POST[$_key]
foreach($_POST as $_key=>$_value){
    !
ereg("^_",$_key) && !isset($$_key) && $$_key=$_POST[$_key];
}
foreach(
$_GET as $_key=>$_value){
    !
ereg("^_",$_key) && !isset($$_key) && $$_key=$_GET[$_key];
}
//递归执行,使得每个数组中的字符串都是为了数据库查询语句等的需要在某些特殊字符前加上了反斜线的字符串
function Add_S(&$array){
    foreach(
$array as $key=>$value){
        if(!
is_array($value)){
            
//addslashes -- 使用反斜线引用字符串,返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加
            //上了反斜线。这些字符是单引号(')、双引号(")、反斜线()与 NUL(NULL 字符)。 一个使用 
            //addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对
            //其进行转义。大多数据库使用  作为转义符:O'reilly。这样可以将数据放入数据库中,而不会插入额外的 。
            //当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。默认情况下,
            //PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 
            //addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致
            //双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
            
$array[$key]=addslashes($value);
        }else{
            
Add_S($array[$key]);
        }
    }
}
?>
还有这个转载连接:http://www.phpchina.com/8310/viewspace_17126.html
posted on 2007-09-05 17:15  林宁  阅读(860)  评论(0编辑  收藏  举报