免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
discuz源代码详解(3)2009-03-07 13:24以下内容为程序代码:/* 用来得到上一个页面的地址,也就是来路。* para string $default 这个参数是直接设置一个refer,不用判断得到* return string*/function dreferer($default = ) global $referer, $indexname; $default = empty($default) ? $indexname : ; if(empty($referer) & isset($GLOBALS_SERVERHTTP_REFERER) $referer = preg_replace(/(?&)(sid=a-z0-96)(&|$)/i, 1, $GLOBALS_SERVERHTTP_REFERER); $referer = substr($referer, -1) = ? ? substr($referer, 0, -1) : $referer; else $referer = dhtmlspecialchars($referer); if(!preg_match(/(.php|a-z+(-d+)+.html)/, $referer) | strpos($referer, logging.php) $referer = $default; return $referer;以下内容为程序代码:/* 设置cookie用的,我觉得这个和clearcookies放到一起比较好,不过好像这个是按字母排的* para string $var cookie名* para string $value cookie值* para int $life 生存时间* para int $prefix cookie前缀* */function dsetcookie($var, $value, $life = 0, $prefix = 1) global $cookiepre, $cookiedomain, $cookiepath, $timestamp, $_SERVER; /echo $prefix.-.$var.-.$value.-.$life.-.$cookiepath; setcookie($prefix ? $cookiepre : ).$var, $value, $life ? $timestamp + $life : 0, $cookiepath, $cookiedomain, $_SERVERSERVER_PORT = 443 ? 1 : 0);以下内容为程序代码:/* 删除论坛的附件用的* para string $filename 附件名* para int $havethumb 是否有缩略图* para int $remote 是否为远程附件* */function dunlink($filename, $havethumb = 0, $remote = 0) global $authkey, $ftp, $attachdir; if($remote) require_once DISCUZ_ROOT./include/ftp.func.php; if(!$ftpconnid) if(!($ftpconnid = dftp_connect($ftphost, $ftpusername, authcode($ftppassword, DECODE, md5($authkey), $ftpattachdir, $ftpport, $ftpssl) return; dftp_delete($ftpconnid, $filename); $havethumb & dftp_delete($ftpconnid, $filename.thumb.jpg); else unlink($attachdir./.$filename); $havethumb & unlink($attachdir./.$filename.thumb.jpg); 以下内容为程序代码:/* 生成email连接用的,比如把图片点击可在新窗口打开查看换成:这样的形式* para string $email* para int $tolink*/function emailconv($email, $tolink = 1) $email = str_replace(array(, .), array(, ), $email); return $tolink ? .$email.: $email;以下内容为程序代码:/* 记录错误日志用的* para string $type 错误类型* para string $message 错误内容* para int $halt 发生错误后是不是就马上停止论坛的运行* */function errorlog($type, $message, $halt = 1) global $timestamp, $discuz_userss, $onlineip, $_SERVER; $user = empty($discuz_userss) ? : $discuz_userss.; $user .= $onlineip.|.$_SERVERREMOTE_ADDR; writelog(errorlog, dhtmlspecialchars($timestampt$typet$usert.str_replace(array(r, n), array( , ), trim($message); if($halt) dexit(); 以下内容为程序代码:/* 判断访问者是不是robot* * return boolean*/function getrobot() if(!defined(IS_ROBOT) $kw_spiders = Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla; $kw_browsers = MSIE|Netscape|Opera|Konqueror|Mozilla; if(preg_match(/($kw_browsers)/, $_SERVERHTTP_USER_AGENT) define(IS_ROBOT, FALSE); elseif(preg_match(/($kw_spiders)/, $_SERVERHTTP_USER_AGENT) define(IS_ROBOT, TRUE); else define(IS_ROBOT, FALSE); return IS_ROBOT;以下内容为程序代码:/* 得到一个文件的扩展名* para string $filename* * return string*/function fileext($filename) return trim(substr(strrchr($filename, .), 1, 10);以下内容为程序代码:/* 用当前时间,会员名,uid,密码,authkey生成一个form hash(哈希)* * return string*/function formhash() global $discuz_user, $discuz_uid, $discuz_pw, $timestamp, $discuz_auth_key; return substr(md5(substr($timestamp, 0, -7).$discuz_user.$discuz_uid.$discuz_pw.$discuz_auth_key), 8, 8);以下内容为程序代码:/* 生成论坛访问权限的字串,以|隔开* para string $permstr 访问权限字串* return string*/function forumperm($permstr) global $groupid, $extgroupids; $groupidarray = array($groupid); foreach(explode(t, $extgroupids) as $extgroupid) if($extgroupid = intval(trim($extgroupid) $groupidarray = $extgroupid; return preg_match(/(|t)(.implode(|, $groupidarray).)(t|$)/, $permstr);以下内容为程序代码:/* 得到用户组,同步groupid和membergroupid,当会员积分和当前积分不一致更新members表。* para int $uid 会员的uid* para array $group 会员所属的用户组* para array $member* return string*/function getgroupid($uid, $group, &$member) global $creditsformula, $db, $tablepre; if(!empty($creditsformula) $updatearray = array(); eval($credits = round($creditsformula);); if($credits != $membercredits) $updatearray = credits=$credits; if($grouptype = member & !($membercredits = $groupcreditshigher & $membercredits query(SELECT groupid FROM $tablepreusergroups WHERE type=member AND $membercredits=creditshigher AND $membercreditsnum_rows($query) $membergroupid = $db-result($query, 0); $updatearray = groupid=$membergroupid; if($updatearray) $db-query(UPDATE $tablepremembers SET .implode(, , $updatearray). WHERE uid=$uid); return $membergroupid;以下内容为程序代码:/* 这个的作用主要是把序列化后存在于数据库中的会员组到期信息取出来* para string $terms* para int $expiry*/function groupexpiry($terms) $terms = is_array($terms) ? $terms : unserialize($terms); $groupexpiry = isset($termsmaintime) ? intval($termsmaintime) : 0; if(is_array($termsext) foreach($termsext as $expiry) if(!$groupexpiry & $expiry) | $expiry $groupexpiry) $groupexpiry = $expiry; return $groupexpiry;以下内容为程序代码:/* 看看一个ip是不是在允许访问的范围内* para string $ip* para array $accesslist* return boolean*/function ipaccess($ip, $accesslist) return preg_match(/(.str_replace(array(rn, ), array(|, ), preg_quote($accesslist, /).)/, $ip);以下内容为程序代码:/* 判断ip是不是被ban了* para string $onlineip* * return boolean*/function ipbanned($onlineip) global $ipaccess, $timestamp, $cachelost; if($ipaccess & !ipaccess($onlineip, $ipaccess) return TRUE; $cachelost .= (include DISCUZ_ROOT./forumdata/cache/cache_ipbanned.php) ? : ipbanned; if(empty($_DCACHEipbanned) return FALSE; else if($_DCACHEipbannedexpiration 6 & preg_match(/w-.+w-.+(.w+)+$/, $email);以下内容为程序代码:/* Discuz语言解析用到的东西,即按照需要装入语言包这个数组* para string $file 语言文件(如:templates, email, actions等)* para int $templateid 用的是哪套模板中的,若没有的话用TEMPLATEID这个常数取代* para string $tpldir 模板所在的目录* return array or false*/function language($file, $templateid = 0, $tpldir = ) $tpldir = $tpldir ? $tpldir : TPLDIR; $templateid = $templateid ? $templateid : TEMPLATEID; $languagepack = DISCUZ_ROOT./.$tpldir./.$file.lang.php; if(file_exists($languagepack) return $languagepack; elseif($templateid != 1 & $tpldir != ./templates/default) return language($file, 1, ./templates/default); else return FALSE; 以下内容为程序代码:/* 超经典的分页函数来了* para int $num 记录总数* para int $perpage 每页的记录数* para int $curpage 当前页* para string $mpurl 这个是用来保留query string中的参数的,打个比方:forumdisplay.php?fid=2,这个就是mpurl了,处理后会变成forumdisplay.php?fid=2&page=xx* para int $maxpages 最大的页数* para int $page 总页数* para int $simple 好像simple如果比一大的话就只有第一页,上一页,下一页,最后页* para string $onclick 点击触发的事件,AJAX用的。* return string*/function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $simple = 0, $onclick = ) $multipage = ; $mpurl .= strpos($mpurl, ?) ? & : ?; $onclick = $onclick ? onclick=.$onclick.(event) : ; if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026南方医科大学南方医院赣州医院(赣州市人民医院)招募高校毕业生见习11人(第二批)笔试参考题库及答案详解
- 数智创新导论 9
- 2026龙岩长汀县人民政府信访局选拔工作人员1人的笔试模拟试题及答案详解
- 2026年小学英语三年级下册第8单元阅读理解练习
- 2026年社区工作者组织协调能力测评习题
- 2026年贵州省苏教版小学英语下册第6单元课后练习题
- 2026广西崇左边境管理支队招聘警务辅助人员76人笔试参考题库及答案详解
- 2026广东湛江市坡头区官渡镇人民政府招聘政府雇员(非编制人员)3人笔试备考试题及答案详解
- 2026年弋阳县公安局第二批公开招聘警务辅助人员【50人】笔试参考题库及答案详解
- 2026年济南市儿童医院公开招聘第二批卫生高级人才和博士(控制总量)考试参考题库及答案详解
- 2026年高处作业企业员工安全培训考试题及答案
- 2026广西南宁市青秀区政务服务局招聘1人(劳务派遣)笔试参考题库及答案详解
- 医养结合机构老年人探视管理制度及流程
- 2026中国银行消防安全专项社会招聘备考题库含答案详解【培优】
- 农民工工资支付承诺书(5篇)
- DLT 5055-2024 水工混凝土掺用粉煤灰技术规范
- 固态聚合物锂离子电池项目可行性研究报告
- 2026年贵州省、市两级机关公开遴选公务员考试(公共科目)综合能力测试题及答案
- SolidWorks机械设计项目化教程 课件全套 模块1-5 SolidWorks软件初识 - 工程图设计
- 2026年医院抗菌药物临床应用管理试题
- 静脉输液工具的合理选择
评论
0/150
提交评论