`
xvyoyo
  • 浏览: 4470 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

PHPWind 源码解析

阅读更多

 

保留关键字 
函数 
类型 
字符串 
注释 
括号      
数字 
运算符 
预定义变量 
PHP 开始结束标签 


global.php 

QUOTE: 

<?php 
/** 

* Copyright (c) 2003-06 PHPWind.net. All rights reserved. 
* Support : http://www.phpwind.net 
* This software is the proprietary information of PHPWind.com. 

*/ 
//此文件内容为全局变量和公用函数 

//定义只有运行错误和语法编译错误才会显示错误信息 

error_reporting ( E_ERROR | E_PARSE) ; 

//设置php .ini中 magic_quotes_runtime 选项值为0 
//若 magic_quotes_runtime 打开时,所有外部引入的数据库资料或者文件等等都会自动转为含有反斜线溢出字符的资料。 
//0表示关闭此功能 

set_magic_quotes_runtime ( 0 ) ; 

//microtime() 当前 Unix 时间戳以及微秒数。本函数仅在支持 gettimeofday() 系统调用的操作系统下可用。 
//如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。 

//用$t_array变量记录microtime()函数产生的msec和sec,此时$t_array代表数组 

$t_array = explode ( ' ' ,microtime ()) ; 
//$P_S_T记录当前时间秒数 
$P_S_T = $t_array[ 0 ] + $t_array[ 1 ] ; 

//判断__FILE__是否为空,返回路径值,并定义为D_P和R_P 
//其中__FILE__文件的完整绝对路径和文件名 
//D_P和R_P的区别在于,当论坛使用二级目录设置时,D_P用于分论坛,R_P用于记录总论坛目录的绝对路径 
//具体参考PHPWind论坛关于二级目录方面的说明 
//在没有使用这方面设置的时候这两个值相等 

define ( 'D_P' ,__FILE__ ? getdirname( __FILE__) . '/' : './' ) ; 
define ( 'R_P' ,D_P) ; 

//销毁以下变量 
unset ( $_ENV ,$HTTP_ENV_VARS ,$_REQUEST ,$HTTP_POST_VARS ,$HTTP_GET_VARS,$HTTP_POST_FILES ,$HTTP_COOKIE_VARS ) ; 

//get_magic_quotes_gpc函数取得 PHP 环境配置的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示关闭本功能;返回 1 表示本功能打开。当 magic_quotes_gpc 打开时,所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的溢出字符。 
//在magic_quotes_gpc功能关闭的情况下,对$_POST、$_GET、$_COOKIE中的特殊字符转义处理 

if ( ! get_magic_quotes_gpc ()){ 
  //$_POST 经由 HTTP POST 方法提交至脚本的变量。 
  Add_S( $_POST ) ; 
  //$_GET 经由 URL 请求提交至脚本的变量。 
  Add_S( $_GET ) ; 
  //$_FILES 通过 HTTP POST 方法传递的已上传文件项目组成的数组。 
  Add_S( $_FILES ) ; 
  //$_COOKIE 经由 HTTP Cookies 方法提交至脚本的变量。 
  Add_S( $_COOKIE ) ; 
} 

//$_SERVER 变量由 web 服务器设定或者直接与当前脚本的执行环境相关联。 
//如果服务器变量中存在HTTP_X_FORWARDED_FOR,则从中取得客户端ip,如果没有则到HTTP_CLIENT_IP中取,都没有则到REMOTE_ADDR中取 
//'HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR'是代理的IP 
//这些IP头消息未必能够取得到(因为不同的浏览器不同的网络设备,可能发不同的IP头消息).所以PHP 就尝试把每个IP头消息判断一下,若有,则取其中的一个. 
//$c_agentip记录是否为代理ip 

if ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]){ 
  $onlineip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ] ; 
  $c_agentip= 1 ; 
} elseif ( $_SERVER [ 'HTTP_CLIENT_IP' ]){ 
  $onlineip = $_SERVER [ 'HTTP_CLIENT_IP' ] ; 
  $c_agentip= 1 ; 
} else { 
  $onlineip = $_SERVER [ 'REMOTE_ADDR' ] ; 
  $c_agentip= 0 ; 
} 

//str_replace 用指定的字符串替换在被搜索的字符串中找到的字符串; 
//第一个,要搜索的字符串,第二个为替换为的字符串,第三个被搜索的字符串 
//取得客户端ip值 

$onlineip = substrs( str_replace ( "\n" ,'' ,$onlineip) ,16 ) ; 
//返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。 
$timestamp= time () ; 
//require_once require_once() 语句在脚本执行期间包含并运行指定文件。此行为和 require() 语句类似, 
//唯一区别是如果该文件中的代码已经被包含了,则不会再次包含.应该用于在脚本执行期间同一个文件有可能被 
//包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。 
//包含require/defend.php文件,如果其中有重复包含,略过 

require_once ( R_P. 'require/defend.php' ) ; 

//根据时区设置$db_cvtime取得正确的时间$timestamp 
$db_cvtime != 0 && $timestamp += $db_cvtime* 60 ; 

//如果论坛运行在DEBUG模式下 
if ( $db_debug){ 
  //定义显示所有错误除了运行NOTICE错误 
  error_reporting ( E_ALL ^ E_NOTICE) ; 
} 
//PHPWind论坛版本变量 
$wind_version = "4.3.2" ; 
//在线列表大小值 
$db_olsize = 96 ; 
//静态htm缓存目录名 
$htm dir = 'htm_data' ;

 

//'PHP_SELF' 当前正在执行脚本的文件名,与 document root 相关 
//'SCRIPT_NAME' 当前执行脚本的绝对路径名,注: 如果脚本在 CLI 中被执行,作为相对路径,例如 
//file.php 或 ../file.php,$_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。 
//'QUERY_STRING' 查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。 
//如果PHP_SELF(当前正在执行脚本的文件名)为空,则设置其为SCRIPT_NAME(包含当前脚本的路径) 
! $_SERVER [ 'PHP_SELF' ] && $_SERVER [ 'PHP_SELF' ] = $_SERVER [ 'SCRIPT_NAME' ] ; 
//取得请求url完整的路径保存在$REQUEST_URI变量中 
$REQUEST_URI = $_SERVER [ 'PHP_SELF' ] . '?' . $_SERVER [ 'QUERY_STRING' ] ; 
//判断当前执行文件名中是否包含静态目录$db_dir,如果包含,则 
if ( strpos ( $_SERVER [ 'PHP_SELF' ] ,$db_dir) !== false ){ 
  //strpos 查找字符串第一次出现的位置,第一个为被查找的字符串,第二个为要查找的字符串。返回值为0,或 
  //者被查找的字符第一次出现的数字位置的值; 
  //取到静态目录前 

  $tmp= substr ( $_SERVER [ 'PHP_SELF' ] ,0 ,strpos ( $_SERVER [ 'PHP_SELF' ] ,$db_dir)) ; 
} else { 
  //取全部 
  $tmp= $_SERVER [ 'PHP_SELF' ] ; 
} 
//HTTP_HOST-当前请求的 Host: 头信息的内容 
//设置论坛地址 

$db_bbsurl= "http://$_SERVER [HTTP_HOST]" . substr ( $tmp,0 ,strrpos ( $tmp,'/' )) ; 

//(int) 强制类型转换为整型 
//定义整型变量$fid用于记录板块id 

$fid = ( int ) $fid; 
//定义整型变量$tid用于记录帖子id 
$tid = ( int ) $tid; 
//初始化附件保存目录$attachname及js脚本路径$js_path 
$attachname = $js_path = '' ; 
//包含data/bbscache/dbset.php文件,如果其中有重复包含,略过 
require_once ( D_P. 'data/bbscache/dbset.php' ) ; 

//ob_start("ob_gzhandler");是一种压缩技术 
//ob_start();仅仅启动缓冲 并没有压缩输出 
//ob_start 用来 打开输出缓冲区。 当缓冲区激活时,所有来自PHP 程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或者使用ob_end_clean()来输出缓冲区的内容。 
//是否允许GZIP 压缩输出,允许使用ob_gzhandler压缩技术,否则只启动缓冲 

$db_obstart == 1 ? ob_start ( 'ob_gzhandler' ) : ob_start () ; 

//如果使用跨台固定图片链,则图片路径为$db_http值,否则使用$picpath图片保存目录 
$imgpath = $db_http != 'N' ? $db_http : $picpath; 
//如果使用远程附件连接设置,则附件路径为$db_attachurl,否则使用$attachname附件保存目录 
$attachpath = $db_attachurl != 'N' ? $db_attachurl : $attachname; 
//本地图片路径 
$imgdir = R_P. $picpath; 
//本地附件路径 
$attachdir = R_P. $attachname; 

//如果D_P和R_P不相等并且使用了跨台固定图片链,即使用了二级目录功能 
if ( D_P != R_P && $db_http != 'N' ){ 
  //取总站论坛地址 
  $R_url= substr ( $db_http,- 1 ) == '/' ? substr ( $db_http,0 ,- 1 ) : $db_http; 
  $R_url= substr ( $R_url,0 ,strrpos ( $R_url,'/' )) ; 
} else { 
  //总站论坛地址即全局变量$db_bbsurl中的论坛地址值 
  $R_url= $db_bbsurl; 
} 

//如果cookie中上次访问变量lastvisit值是否为空 
if ( GetCookie( 'lastvisit' )){ 
  //取cookie中的上次访问变量lastvisit值,以"\t"分割并分别赋于$c_oltime,$lastvisit,$lastpath 
  //$c_oltime-用户在线时间,$lastvisit-上次访问时间,$lastpath-上次访问路径 

  list ( $c_oltime,$lastvisit,$lastpath) = explode ( "\t" ,GetCookie( 'lastvisit' )) ; 
  //判断现在和上次访问之间的时间差是否小于论坛设定的在线用户时限,如果小于,则用户此次在线时间累加相应时间数值 
  ( $onbbstime= $timestamp- $lastvisit) < $db_onlinetime && $c_oltime+= $onbbstime; 
} else { 
  $lastvisit= $lastpath= '' ; 
  $c_oltime= 0 ; 
} 
//取在线偏移cookie(在线列表文件中的偏移量) 
$ol_offset = GetCookie( 'ol_offset' ) ; 

//取风格cookie 
$skinco = GetCookie( 'skinco' ) ; 
//若刷新预防时间不等于0 
if ( $db_refreshtime!= 0 ){ 
  //$REQUEST_URI 访问此页面所需的 URI。 
  //如果$REQUEST_URI与上次最后访问的路径相同,且与上次访问的时间差小于论坛设定的刷新预防时间 

  if ( $REQUEST_URI == $lastpath && $onbbstime< $db_refreshtime){ 
    //如果Cookie中没有winduser即用户的记录,设置$groupid为guest即当前用户归于游客组 
    ! GetCookie( 'winduser' ) && $groupid= 'guest' ; 
    //创始人账号设置为TRUE 
    $manager= TRUE ; 
    //如果cookie中没有风格变量,则风格设置为论坛的默认风格 
    $skin = $skinco ? $skinco : $db_defaultstyle; 
    //转页面显示语言文件中refresh_limit对应键值的提示信息 
    Showmsg( "refresh_limit" ) ; 
  
}
//引用 在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号 
//表别名。注意在 
PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。 PHP 的引用允 
//许用两个变量来指向同一个内容。意思是,当这样做时: $a =& $b;这意味着 $a 和 $b 指向了 
//同一个变量。注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向 
//了同一个地方。注: 如果具有引用的数组被拷贝,其值不会解除引用。对于数组传值给函数也是如此。 
$H_url =& $db_wwwurl; 
$B_url =& $db_bbsurl; 

//包含data/sql_config.php文件,如果其中有重复包含,略过 
require_once ( D_P. 'data/sql_config.php' ) ; 

//如果论坛关闭 
if ( $db_bbsifopen== 0 ){ 
  //从cookie中取得AdminUser(管理人员)变量值,并对其进行解码操作后,以"\t"分割存入数组$CK中 
  $CK = explode ( "\t" ,StrCode( GetCookie( 'AdminUser' ) ,'DECODE' )) ; 
  //如果上次访问时间$CK[0]与现在相差超过1800s即30分钟 
  //或者账号$CK[1]不是创始人账号$manager 
  //或者不符合安全检测 

  if ( $timestamp- $CK[ 0 ] > 1800 || $CK[ 1 ] != $manager || ! SafeCheck( $CK,PwdCode($manager_pwd))){ 
    //取得风格值 
    $skin = $skinco ? $skinco : $db_defaultstyle; 
    //设置用户组为空 
    $groupid = '' ; 
    //转页面显示$db_whybbsclose信息即论坛关闭的原因 
    Showmsg( $db_whybbsclose) ; 
  
}
 

//gmdate -- 格式化一个 GMT/UTC 日期/时间 
//date -- 格式化一个本地时间/日期,返回将整数 timestamp 按照给定的格式字串而产生的 
//字符串。如果没有给出时间戳则使用本地当前时间。换句话说,timestamp 是可选的,默认值为 time()。注: 
//有效的时间戳典型范围是格林威治时间 1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 
//03:14:07。(此范围符合 32 位有符号整数的最小值和最大值)。不过在 
PHP 5.1 之前此范围在某些系统 
//(如 Windows)中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。 
//格式字串可以识别以下 format 参数的字符串 format 字符 说明 返回值例子 
//日 --- --- 
//d 月份中的第几天,有前导零的 2 位数字 01 到 31 
//D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun 
//j 月份中的第几天,没有前导零 1 到 31 
//l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday 
//N ISO-8601 格式数字表示的星期中的第几天(
 PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天) 
//S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用 
//w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六) 
//z 年份中的第几天 0 到 366 
//星期 --- --- 
//W ISO-8601 格式年份中的第几周,每周从星期一开始(
 PHP 4.1.0 新加的) 
//月 --- --- 
//F 月份,完整的文本格式,例如 January 或者 March January 到 December 
//m 数字表示的月份,有前导零 01 到 12 
//M 三个字母缩写表示的月份 Jan 到 Dec 
//n 数字表示的月份,没有前导零 1 到 12 
//t 给定月份所应有的天数 28 到 31 
//年 --- --- 
//L 是否为闰年 如果是闰年为 1,否则为 0 
//o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用 
//那一年。(
 PHP 5.1.0 新加) Examples: 1999 or 2003 
//Y 4 位数字完整表示的年份 例如:1999 或 2003 
//y 2 位数字表示的年份 例如:99 或 03 
//时间 --- --- 
//a 小写的上午和下午值 am 或 pm 
//A 大写的上午和下午值 AM 或 PM 
//B Swatch Internet 标准时 000 到 999 
//g 小时,12 小时格式,没有前导零 1 到 12 
//G 小时,24 小时格式,没有前导零 0 到 23 
//h 小时,12 小时格式,有前导零 01 到 12 
//H 小时,24 小时格式,有前导零 00 到 23 
//i 有前导零的分钟数 00 到 59 
//s 秒数,有前导零 00 到 59 
//时区 --- --- 
//e 时区标识(
 PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores 
//I 是否为夏令时 如果是夏令时为 1,否则为 0 
//O 与格林威治时间相差的小时数 例如:+0200 
//T 本机所在的时区 例如:EST,MDT(在 Windows 下为完整文本格式,例如“Eastern 
//Standard Time”,中文版会显示“中国标准时间”)。 
//Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200 
//完整的日期/时间 --- --- 
//c ISO 8601 格式的日期(
 PHP 5 新加) 2004-02-12T15:19:21+00:00 
//r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200 
//U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time() 
//格式字串中不能被识别的字符将原样显示。Z 格式在使用 gmdate() 时总是返回 0。 
//取当前默认时区时间的24小时时间值,赋于$t['hours'] 
$t = array ( 'hours' => gmdate ( 'G' ,$timestamp+ $db_timedf* 3600 )) ; 
//floor -- 舍去法取整 
//今天的起始时间 

$tdtime = ( floor ( $timestamp/ 3600 ) - $t[ 'hours' ]) * 3600 ; 
//是否需要更新在线情况标记 
$runfc = 'N' ; 
//如果上次访问时间和当前时间的时间差大于论坛设置的在线用户时限 
//或者板块$fid不为空且不等于cookie中的上次访问板块id 
//或者上次访问板块id的cookie存在且$wind_in(论坛动作)为hm(论坛首页) 

if ( $timestamp- $lastvisit> $db_onlinetime || ( $fid && $fid != GetCookie( 'lastfid' )) || ( GetCookie( 'lastfid') && $wind_in== 'hm' )){ 
  //设置cookie中上次访问板块id 
  Cookie( 'lastfid' ,$fid) ; 
  //设置$runfc为Y 
  $runfc= 'Y' ; 
  //包含data/userglobal.php文件,如果其中有重复包含,略过 
  require_once ( R_P. 'require/userglobal.php' ) ; 
} 

//包含require/db_'.$database.'.php文件,如果其中有重复包含,略过(此处为db_mysql.php) 
require_once ( R_P. 'require/db_' . $database. '.php' ) ; 
//创建数据库连接 
$db = new DB( $dbhost, $dbuser, $dbpw, $dbname, $pconnect) ; 
//销毁$dbhost,$dbuser,$dbpw,$dbname,$pconnect,$manager_pwd变量 
unset ( $dbhost,$dbuser,$dbpw,$dbname,$pconnect,$manager_pwd) ; 
//从cookie中取得winduser信息解码用"\t"分割后存入$winduid,$windpwd 
list ( $winduid,$windpwd) = explode ( "\t" ,StrCode( GetCookie( 'winduser' ) ,'DECODE' )) ;
//若用户登陆id存在且密码长度大等于16 
if ( $winduid && strlen ( $windpwd) >= 16 ){ 
  //定义$winddb为用户信息数组 
  $winddb = User_info() ; 
  //用户id 
  $winduid = $winddb[ 'uid' ] ; 
  //用户组id 
  $groupid = $winddb[ 'groupid' ] ; 
  //用户实际威望为数据库中威望值/10取整 
  $userrvrc = ( int )( $winddb[ 'rvrc' ] / 10 ) ; 
  //用户名 
  $windid = $winddb[ 'username' ] ; 
  //用户时间显示格式 
  $_datefm = $winddb[ 'datefm' ] ; 
  //用户时区设置 
  $_timedf = $winddb[ 'timedf' ] ; 
  //用户皮肤 
  $skin = $winddb[ 'style' ] ? $winddb[ 'style' ] : $db_defaultstyle; 
  //用户在线ip 
  $winddb[ 'onlineip' ] = substr ( $winddb[ 'onlineip' ] ,0 ,strpos ( $winddb[ 'onlineip' ] ,'|' )) ; 
  //如果用户组id为-1则设置用户组id为用户的会员组id 
  $groupid== '-1' && $groupid= $winddb[ 'memberid' ] ; 
  //若用户开启签名显示功能 且 
  //((用户开始使用签名时间为空 且 签名显示一天需要交易币个数不为空 且当前用户组属于需要购买签名显示的用户组 且 用户拥有的交易币数大于签名显示一天需要交易币个数) 或者 
  //(用户开始使用签名时间不为空 且 用户开始使用签名时间不等于今日开始时间)) 

  if ( $winddb[ 'showsign' ] && ( ! $winddb[ 'starttime' ] && $db_signmoney && strpos ($db_signgroup,",$groupid," ) !== false && $winddb[ 'currency' ] > $db_signmoney || $winddb[ 'starttime' ]&& $winddb[ 'starttime' ] != $tdtime)){ 
    //包含require/Signfunc.php文件,如果其中有重复包含,略过 
    require_once ( R_P. 'require/Signfunc.php' ) ; 
    //对用交易币购买签名做相应的操作 
    Signfunc( $winddb[ 'showsign' ] ,$winddb[ 'starttime' ] ,$winddb[ 'currency' ]) ; 
  
}
 else { 
  //若登陆id不存在 
  //设置风格为论坛默认风格 

  $skin = $db_defaultstyle; 
  //用户组为游客组 
  $groupid = 'guest' ; 
  //销毁$winddb 
  unset ( $winddb) ; 
  //设置用户名,用户id,用户时间显示方式,用户时区设置 
  $windid= $winduid= $_datefm= $_timedf= '' ; 
} 
//取最优先的风格 
$_GET [ 'skinco' ] && $skinco= $_GET [ 'skinco' ] ; 
$_POST [ 'skinco' ] && $skinco= $_POST [ 'skinco' ] ; 
//如果风格存在,且D_P."data/style/$skinco.php"文件存在,风格变量中不包含".." 
if ( $skinco && file_exists ( D_P. "data/style/$skinco.php" ) && strpos ( $skinco,'..' ) === false ){ 
  //设置风格变量 
  $skin= $skinco; 
  //设置风格cookie 
  Cookie( 'skinco' ,$skinco) ; 
} 
//对处在ip封禁列表中的ip禁止登陆 
Ipban() ; 
//设置上次访问cookie,包括此次在线时间、当前时间、请求页面 
Cookie( 'lastvisit' ,$c_oltime. "\t" . $timestamp. "\t" . $REQUEST_URI ) ;
//如果当前用户组不是游客 
if ( $groupid!= 'guest' ){ 
  //且相应组别配置文件存在 
  if ( file_exists ( D_P. "data/groupdb/group_$groupid.php" )){ 
    //包含相应组别配置文件,如有重复,略过 
    require_once ( D_P. "data/groupdb/group_$groupid.php" ) ; 
  } else { 
    //否则载入默认组别配置文件 
    require_once ( D_P. "data/groupdb/group_1.php" ) ; 
  
}
 else { 
  //载入游客组配置文件 
  require_once ( D_P. "data/groupdb/group_2.php" ) ; 
} 

//HTTP_REFERER 链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是真实正确的。 
//HTTP_HOST 当前请求的 Host: 头信息的内容。 
//如果允许用户使用宣传代码且用户名非空且传入的参数$u为数字 
//或者传入的参数$a存在且长度不超过16且HTTP_REFERER中不含HTTP_HOST 
if ( $db_ads && ! $windid && ( is_numeric ( $u) || ( $a && strlen ( $a) < 16 )) && strpos ( $_SERVER ['HTTP_REFERER' ] ,$_SERVER [ 'HTTP_HOST' ]) === false ){ 
  //设置用户宣传cookie userads 
  Cookie( 'userads' ,"$u\t$a" ) ; 
} 

//如果SCR常量没有定义 
if ( ! defined ( 'SCR' )){ 
  //定义其为other 
  define ( 'SCR' ,'other' ) ; 
} 
//标记页面类型 
$SCR = SCR; 
$header_ad= $footer_ad= '' ; 
//如果页面类型不是帖子页面 
if ( SCR != 'read' ){ 
  //取得广告信息数组 
  $advertdb = AdvertInit( SCR,$fid) ; 
  //is_array -- 检测变量是否是数组 
  if ( is_array ( $advertdb[ 'header' ])){ 
    //array_rand -- 从数组中随机取出一个或多个单元 
    //取得页首广告 

    $header_ad = $advertdb[ 'header' ][ array_rand ( $advertdb[ 'header' ])][ 'code' ] ; 
  } 
  if ( is_array ( $advertdb[ 'footer' ])){ 
    //取得页尾广告 
    $footer_ad = $advertdb[ 'footer' ][ array_rand ( $advertdb[ 'footer' ])][ 'code' ] ; 
  
}
 
//返回页首导航 类似 霏凡论坛 -> 口- 超级灌水 
function headguide( $guidename= array () ,$guide= '' ){ 
  global $fid,$jinhua; 
  if ( is_array ( $guidename)){ 
    foreach ( $guidename as $key=> $value){ 
        if ( $key){ 
          $headguide.= $value ? " -> <a href='$value'>$key</a>" : " -> $key" ; 
        
    } 
  }
 else { 
    $headguide.= " -> " . $guidename; 
  } 
  //返回页首导航字符串 
  return $headguide; 
} 

//页面跳转 
function refreshto( $URL,$content,$statime= 1 ){ 
  global $db_ifjump; 
  //替换url中的特殊字符= 
  $URL= str_replace ( '=' ,'=' ,$URL) ; 
  //如果开启自动跳转且多少秒后抓向$statime大于0 
  if ( $db_ifjump && $statime> 0 ){ 
  
  //清空缓冲 
    ob_end_clean () ; 
    //是否允许GZIP 压缩输出,允许使用ob_gzhandler压缩技术,否则只启动缓冲 
    global $tplpath,$fid,$imgpath,$db_obstart,$db_bbsname,$skin,$B_url; 
    $index_name =& $db_bbsname; 
    $index_url color: #0
分享到:
评论

相关推荐

    PHPWind 源码解析.docx

    【PHPWind 源码解析】 PHPWind 是一款流行的开源论坛软件,它的源码解析对于深入理解和定制论坛功能至关重要。在这个文档中,我们将专注于 `global.php` 文件及其关联文件的解析,这些文件在 PHPWind 4.3.2 060428 ...

    PHPWIND 解析

    PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析PHPWIND 源码 解析

    phpwind源码分析

    ### PHPWind 源码分析 #### 一、概述 本文档主要针对 PHPWind 4.3.2060428 更新版中的 `global.php` 文件进行深入的源码分析,以此来帮助读者更好地理解 PHPWind 论坛系统的运行机制及内部逻辑。通过对该文件的...

    phpwind头像裁剪分离源码

    【PHPWind头像裁剪与分离源码解析】 PHPWind是一款流行的开源社区建站系统,其功能强大且易于扩展。在社区网站中,用户头像是一个重要的组成部分,它代表了用户的个性化形象。PHPWind头像裁剪分离源码是实现用户...

    易语言登陆PHPWind取Cookie模块源码

    【易语言登陆PHPWind取Cookie模块源码】是针对PHPWind论坛系统的一种编程实现,它主要涉及到了易语言编程、网络通信以及Cookie管理等技术。易语言是一种中国本土开发的简单易学的编程语言,其目标是降低编程的难度,...

    Phpwind871

    而源码解析则帮助开发者理解软件内部工作原理,便于自定义功能或进行二次开发。 【标签】"Phpwind"是这个话题的核心,它是一个强大的社区建站系统,具有丰富的功能模块,如用户管理、论坛管理、主题分类、发帖回帖...

    phpwind_v9.0.2_utf8.zip

    - **Web 服务器**:如 `Apache` 或 `Nginx`,它们能解析 `.php` 文件并正确配置以处理 `phpwind` 的请求。 2. **下载与解压**: 首先,下载 `phpwind_v9.0.2_utf8.zip` 压缩包,解压缩到服务器的 Web 目录下。...

    phpwind_GBK_8.5.zip

    《phpwind论坛源码解析与应用》 PHPWind(简称PW)是一款基于PHP语言和MySQL数据库的开源社区软件,以其高效、稳定、易用著称。"phpwind_GBK_8.5.zip"是一个压缩包文件,包含了PHPWind 8.5版本的GBK编码源代码,...

    易语言源码易语言登陆PHPWind取Cookie模块源码.rar

    在本压缩包“易语言源码易语言登陆PHPWind取Cookie模块源码.rar”中,包含了一个易语言编写的模块,该模块主要用于登录PHPWind论坛并获取Cookie信息。 PHPWind是一款开源的PHP论坛系统,广泛应用于各种社区网站。在...

    商业源码-编程源码-PHPWind v8.3 BIG5.zip

    以上就是关于 "商业源码-编程源码-PHPWind v8.3 BIG5.zip" 文件中涉及的一些核心知识点。通过深入理解和掌握这些概念,开发者能够有效地利用 PHPWind 构建自己的社区网站,并根据需求进行定制和优化。

    PHPWind Forums v7.5 SP3 GBK整合版 20100305.zip

    5. 域名中包含 .jpg 、.gif、.png 字样或者地址中的扩展名为复合扩展名,且包含包含 .jpg 、.gif、.png 字样,如:abc.jpg.rar ,会被错误解析为图片。 6. PW预览的时候,半角引号总是显示出错,' 显示为 \' 7. ...

    易语言登陆PHPWind取Cookie模块源码.zip

    在这个案例中,源码揭示了如何用易语言实现登录PHPWind并获取Cookie的流程,包括网络请求、数据解析和Cookie管理等部分。 5. **登录模块**:登录模块是软件中处理用户登录的部分,通常包括验证用户名和密码、创建或...

    android源码仿phpwind板块列表

    在Android开发中,"android源码仿phpwind板块列表"是一个常见的需求,它涉及到对PHPWind网站论坛板块结构的模仿,通常是为了实现一个具有类似功能的移动应用。在这个项目中,我们关注的重点是使用ListView来展示分组...

    彻底去掉发帖表情和发帖表情眶 for phpwind7.32.rar

    《全面解析:禁用phpwind7.32论坛发帖表情功能》 在phpwind7.32这个流行的开源论坛系统中,发帖表情功能是一个常见的互动元素,它允许用户在帖子中添加丰富的表情,增强表达力。然而,对于一些论坛管理员来说,这种...

    PHP实例开发源码-phpwind 神箭手云采集插件.zip

    【PHP实例开发源码-phpwind 神箭手云采集插件.zip】是一个与PHP相关的压缩文件,其中包含了用于开发phpwind论坛系统插件的源代码。PHPWind是一款开源的PHP论坛软件,常用于构建社区网站,而神箭手云采集插件则是为这...

    商业源码-编程源码-phpwind 商家导航 v1.0 UTF8 build 20101013.zip

    同时,对PHP的深入理解,包括函数、类库、错误处理和性能优化,都是解析此源码的关键。 2. **UTF8编码**:该源码采用UTF8编码,意味着它可以支持全球多种语言,特别适合中文环境,避免了乱码问题。理解字符集处理...

    phpwind_UTF8_v8.5.524

    三、压缩包文件解析 1. "说明.htm":这通常是安装或使用指南,包含了关于如何安装、配置PHPWind v8.5.524的具体步骤,以及一些注意事项。 2. "chinaz.com.txt":可能是来源于站长之家(Chinaz)的资料,可能包含了...

    ASP论坛网站实例开发源码——仿Chinaren(PHPWind4.3.2)论坛最新商业版实例开发.rar

    《ASP论坛网站实例开发——基于PHPWind4.3.2的Chinaren仿站解析》 在互联网技术日新月异的今天,论坛网站作为互动交流的重要平台,一直备受关注。本实例——“ASP论坛网站实例开发源码——仿Chinaren(PHPWind4.3.2)...

Global site tag (gtag.js) - Google Analytics