phpwind源码分析大全(修正版).doc_第1页
phpwind源码分析大全(修正版).doc_第2页
phpwind源码分析大全(修正版).doc_第3页
phpwind源码分析大全(修正版).doc_第4页
phpwind源码分析大全(修正版).doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

注:1、本源码分析针对PHPWind 4.3.2 060428更新版做出,2、除部分文件外,多数文件均可直接使用,不影响论坛的正常运行,3、本次仅对global.php相关的文件进行解析说明,4、下面只贴出其中几个重要文件的源码分析,其余文件请自行下载附件查看,基本上看懂这些文件,可以对phpwind论坛的运行机制有个大概的了解,5、毕竟我不是PHPWind的作者,理解上肯定会有偏差,欢迎大家指出文中的错误。Quote: 下面对代码中的颜色使用作个说明保留关键字函数类型字符串注释括号 数字运算符预定义变量PHP开始结束标签global.phpQuote: ?php /* * * Copyright (c) 2003-06 PHPW. All rights reserved. * Support : * This software is the PRoprietary information of PHPW. * */ /此文件内容为全局变量和公用函数 /定义只有运行错误和语法编译错误才会显示错误信息 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_array0 + $t_array1; /判断_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($_SERVERHTTP_X_FORWARDED_FOR) $onlineip = $_SERVERHTTP_X_FORWARDED_FOR; $c_agentip=1; elseif($_SERVERHTTP_CLIENT_IP) $onlineip = $_SERVERHTTP_CLIENT_IP; $c_agentip=1; else $onlineip = $_SERVERREMOTE_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,$_SERVERSCRIPT_FILENAME 将包含用户指定的相对路径。 /QUERY_STRING 查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。 /如果PHP_SELF(当前正在执行脚本的文件名)为空,则设置其为SCRIPT_NAME(包含当前脚本的路径) !$_SERVERPHP_SELF & $_SERVERPHP_SELF=$_SERVERSCRIPT_NAME; /取得请求url完整的路径保存在$REQUEST_URI变量中 $REQUEST_URI = $_SERVERPHP_SELF.?.$_SERVERQUERY_STRING; /判断当前执行文件名中是否包含静态目录$db_dir,如果包含,则 if(strpos($_SERVERPHP_SELF,$db_dir)!=false) /strpos 查找字符串第一次出现的位置,第一个为被查找的字符串,第二个为要查找的字符串。返回值为0,或 /者被查找的字符第一次出现的数字位置的值; /取到静态目录前 $tmp=substr($_SERVERPHP_SELF,0,strpos($_SERVERPHP_SELF,$db_dir); else /取全部 $tmp=$_SERVERPHP_SELF; /HTTP_HOST-当前请求的 Host: 头信息的内容 /设置论坛地址 $db_bbsurl=url=http:/$_SERVERHTTP_HOSThttp:/$_SERVERHTTP_HOST.substr($tmp,0,strrpos($tmp,/url); /(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值,否则使用$pICPat*片保存目录 $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 & $onbbstime1800 | $CK1!=$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小时时间值,赋于$thours $t = array(hours=gmdate(G,$timestamp+$db_timedf*3600); /floor - 舍去法取整 /今天的起始时间 $tdtime = (floor($timestamp/3600)-$thours)*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 = $winddbuid; /用户组id $groupid = $winddbgroupid; /用户实际威望为数据库中威望值/10取整 $userrvrc = (int)($winddbrvrc/10); /用户名 $windid = $winddbusername; /用户时间显示格式 $_datefm = $winddbdatefm; /用户时区设置 $_timedf = $winddbtimedf; /用户皮肤 $skin = $winddbstyle ? $winddbstyle : $db_defaultstyle; /用户在线ip $winddbonlineip=substr($winddbonlineip,0,strpos($winddbonlineip,|); /如果用户组id为-1则设置用户组id为用户的会员组id $groupid=-1 & $groupid=$winddbmemberid; /若用户开启签名显示功能 且 /(用户开始使用签名时间为空 且 签名显示一天需要交易币个数不为空 且当前用户组属于需要购买签名显示的用户组 且 用户拥有的交易币数大于签名显示一天需要交易币个数) 或者 /(用户开始使用签名时间不为空 且 用户开始使用签名时间不等于今日开始时间) if($winddbshowsign & (!$winddbstarttime & $db_signmoney & strpos($db_signgroup,$groupid,) != false & $winddbcurrency $db_signmoney | $winddbstarttime & $winddbstarttime != $tdtime) /包含require/Signfunc.php文件,如果其中有重复包含,略过 require_once(R_P.require/Signfunc.php); /对用交易币购买签名做相应的操作 Signfunc($winddbshowsign,$winddbstarttime,$winddbcurrency); else /若登陆id不存在 /设置风格为论坛默认风格 $skin = $db_defaultstyle; /用户组为游客组 $groupid = guest; /销毁$winddb unset($winddb); /设置用户名,用户id,用户时间显示方式,用户时区设置 $windid=$winduid=$_datefm=$_timedf=; /取最优先的风格 $_GETskinco & $skinco=$_GETskinco; $_POSTskinco & $skinco=$_POSTskinco; /如果风格存在,且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) 口- 超级灌水 function headguide($guidename=array(),$guide=) global $fid,$jinhua; if(is_array($guidename) foreach($guidename as $key=$value) if($key) $headguide.=$value ? - $key : - $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 & $statime0) /清空缓冲 ob_end_clean(); /是否允许GZIP 压缩输出,允许使用ob_gzhandler压缩技术,否则只启动缓冲 global $tplpath,$fid,$imgpath,$db_obstart,$db_bbsname,$skin,$B_url; $index_name =& $db_bbsname; $index_url =& $B_url; $db_obstart=1 ? ob_start(ob_gzhandler) : ob_start(); /确定引用风格 if(file_exists(D_P.data/style/$skin.php) & strpos($skin,.)=false) include_once(D_P.data/style/$skin.php); else include_once(D_P.data/style/wind.php); /解出全局变量数组,如果有冲突不覆盖 extract($GLOBALS, EXTR_SKIP); /包含对应风格目录下的lang_refreshto.php语言文件,如果其中有重复包含,略过 require_once GetLang(refreshto); $lang$content & $content=$lang$content; /包含对应风格目录下的refreshto.htm文件 require PrintEot(refreshto); /退出 exit; else ObHeader($URL); /页面直接转向 function ObHeader($URL) global $db_obstart,$db_bbsurl,$db_htmifopen; /strtolower-小写处理字符串 /如果开启静态目录部署功能且url中不是http开头 if($db_htmifopen & strtolower(substr($URL,0,4)!=http) $URL=$db_bbsurl/$URL; /页面直接转向 if($db_obstart) /header - 发送一个原始 HTTP 标头 header(Location: $URL);exit; else ob_start(); echo ; exit; /转向显示提示信息的页面显示提示信息 function Showmsg($msg_info,$dejump=0) /extract - 从数组中将变量导入到当前的符号表 /extract() 检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的冲突。对待非法数字和冲突的键名的方法将根据 extract_type 参数决定。可以是以下值之一: /EXTR_OVERWRITE(如果有冲突,覆盖已有的变量) /EXTR_SKIP(如果有冲突,不覆盖已有的变量) /EXTR_PREFIX_SAME(如果有冲突,在变量名前加上前缀 prefix) /EXTR_PREFIX_ALL(给所有变量名加上前缀 prefix) /EXTR_PREFIX_INVALID(仅在非法数字的变量名前加上前缀 prefix) /EXTR_IF_EXISTS(仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。) /EXTR_PREFIX_IF_EXISTS(仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理) /EXTR_REFS(将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用) /如果没有指定 extract_type,则被假定为 EXTR_OVERWRITE。 /extract() 返回成功导入到符号表中的变量数目。 /$GLOBALS由所有已定义全局变量组成的数组。变量名就是该数组的索引。 /将全局变量导入当前符号表 extract($GLOBALS, EXTR_SKIP); /在函数中声明了全局变量,任何变量的所有引用变量都会指向到全局变量。包括修改 /声明全局变量,风格图片文件路径$stylepath,表格宽度$tablewidth,小表格宽度$mtablewidth,风格模板路径$tplpath,$runfc global $stylepath,$tablewidth,$mtablewidth,$tplpath,$runfc; $runfc=; /检查SIMPLE常量是否定义,如果定义过 if(defined(SIMPLE) /是一个链接基准标记,用以改变页面中所有链接标记的参数默认值。 echo ; /包含require/header.php文件,如果其中有重复包含,略过 require_once(R_P.require/header.php); /包含对应风格目录下的lang_msg.php语言文件,如果其中有重复包含,略过 require_once GetLang(msg); /如果相应的语言文件中对应键值存在,则设置$msg_info为对应值 $lang$msg_info & $msg_info=$lang$msg_info; /包含对应风格目录下的showmsg.htm文件 require_once PrintEot(showmsg); exit; /返回参数指定的文件相应风格语言文件路径 function GetLang($lang,$EXT=php) /声明全局变量风格模板路径 global $tplpath; /路径为 $path=R_P.template/$tplpath/lang_$lang.$EXT; /如果该风格下模板指定的文件不存在,则路径为默认的wind风格下的对应文件 !file_exists($path) & $path=R_P.template/wind/lang_$lang.$EXT; return $path; /返回参数指定的文件相应风格模板路径 function PrintEot($template,$EXT=htm) /Copyright (c) 2003-06 PHPWind /声明全局变量风格模板路径 global $tplpath; /如果参数为空,则设置参数值为N if(!$template) $template=N; /路径为 $path=R_P.template/$tplpath/$template.$EXT; /如果该风格下模板指定的文件不存在,则路径为默认的wind风格下的对应文件 !file_exists($path) & $path=R_P.template/wind/$template.$EXT; return $path; /设置相关cookie function Cookie($ck_Va

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论