设为首页 收藏本站
查看: 1030|回复: 0

[经验分享] Discuz!源代码分析系列:./include/global.func.php(2)

[复制链接]

尚未签到

发表于 2018-12-22 09:40:36 | 显示全部楼层 |阅读模式
转自www.discuz.net 作者:郭鑫  /**
  * 用来得到上一个页面的地址,也就是来路。
  * @para string $default 这个参数是直接设置一个refer,不用判断得到
  *
  * @return string
  */
  function dreferer($default = '') {
  global $referer, $indexname;
  $default = empty($default) ? $indexname : '';
  if(empty($referer) && isset($GLOBALS['_SERVER']['HTTP_REFERER'])) {
  $referer = preg_replace("/([\?&])((sid\=[a-z0-9]{6})(&|$))/i", '\\1', $GLOBALS['_SERVER']['HTTP_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, $_SERVER['SERVER_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(!$ftp['connid']) {
  if(!($ftp['connid'] = dftp_connect($ftp['host'], $ftp['username'], authcode($ftp['password'], 'DECODE', md5($authkey)), $ftp['attachdir'], $ftp['port'], $ftp['ssl']))) {
  return;
  }
  }
  dftp_delete($ftp['connid'], $filename);
  $havethumb && dftp_delete($ftp['connid'], $filename.'.thumb.jpg');
  } else {
  @unlink($attachdir.'/'.$filename);
  $havethumb && @unlink($attachdir.'/'.$filename.'.thumb.jpg');
  }
  }
  复制内容到剪贴板代码:
  /**
  * 生成email连接用的,比如把nicollelord@yahoo.com换成:nicollelord@yahoo.com这样的形式
  * @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.'|'.$_SERVER['REMOTE_ADDR'];
  writelog('errorlog', dhtmlspecialchars("$timestamp\t$type\t$user\t".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)/", $_SERVER['HTTP_USER_AGENT'])) {
  define('IS_ROBOT', FALSE);
  } elseif(preg_match("/($kw_spiders)/", $_SERVER['HTTP_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和member['groupid'],当会员积分和当前积分不一致更新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 != $member['credits']) {
  $updatearray[] = "credits='$credits'";
  }
  if($group['type'] == 'member' && !($member['credits'] >= $group['creditshigher'] && $member['credits'] < $group['creditslower'])) {
  $query = $db->query("SELECT groupid FROM {$tablepre}usergroups WHERE type='member' AND $member[credits]>=creditshigher AND $member[credits]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-654286-1-1.html 上篇帖子: PHP设计模式(4)命令链模式 下篇帖子: 使用php simple html dom parser解析html标签
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表