忘记密码?

一键登录

草根吧

致歉信
            目前收到合肥贰道网络科技有限公司的《停止侵权告知函》关于我站网友发布分享的侵权内容信息侵犯了Discuz! 相关应用的侵权行为,我们深表遗憾,目前我们以对提供到的《停止侵权附件内容》的链接进行了处理,对于受到侵权的地方,如果要是涉及到侵犯了权利人的权利,我站表示歉意,为此本站特此声明,我站为公益免费分享平台,不以营利为目的,内容由网友自己分享,目的仅限于学习研究及欣赏。

Discuz!PHP的超全局变量$_SERVER

查看: 338|回复: 0

[Discuz!二次开发] Discuz!PHP的超全局变量$_SERVER

[复制链接]

4543

主题

9990

热度

1万

贡献

民审

Rank: 8Rank: 8

发表于 2018-2-27 16:02:48 | 显示全部楼层 |阅读模式
本帖最后由 民审-M 于 2018-2-27 16:04 编辑

$_SERVER是PHP中十分实用的超全局变量,在开发可移植的网站的时候会变得很有用。
  下面我记录一下我自己常用到的几个变量
  1.  $_SERVER['SERVER_NAME']  :记录了网站的域名。
  2.  $_SERVER['DOCUMENT_ROOT']  :网站的根目录(就是在你系统下的绝对路径,在windows都是例如是C://wamp/www之类的,linux例如是/var/www/html)。
  3.  $_SERVER['SERVER_ADDR']  :记录网站的IP地址
  4.  $_SERVER['REMOTE_ADDR']  :记录访问者的IP地址
  5.  $_SERVER['SCRIPT_FILENAME']  :访问的文件的路径
  6.  $_SERVER['REQUEST_SCHEME']  :访问的文件的方式,常见为http

  一般而言,在建站的时候,都会采用单一入口(多见为从index.php)的形式,在我看来,单一入口的好处有下面两点:
  1.后面的程序可以统一处理,比如说要开发时候用到某个第三方类库,只需要在入口文件引入,其余的程序都会可以引用
  2.路径可以统一处理。因为都是从index.php开始,所以引入文件只要相对于index.php的路径即可。

  个人曾经二次开发过Discuz和WordPress,发现他们都有共同点就是都会在刚刚初始化的时候就定义一个变量存储文件夹的绝对路径,这样在以后引入其他文件的时候就会很方便,而且也有移植性。
  关于网站根目录,举个栗子
  Discuz在source/class/class_core.php定义了站点的根目录DISCUZ_ROOT,
  它是这样定义的:
  1. define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -12));
复制代码
  __FILE__代表当前文件的路径,dirname(__FILE__)代表获取当前文件的根目录,substr(dirname(__FILE__), 0, -12)表示截取前面字符,不要最后12个,刚刚好也就是source/class这个12个字符。我的网站是/var/www/html/discuz/source/class/class_core.php,经过这么一处理,discuz站点根目录就得出是/var/www/html/discuz/,看上去复杂其实自己推算一下还是很容易得出的。
  WordPress在wp-configs里定义站点根目录ABSPATH。
  直接更方便:
  1. define('ABSPATH', dirname(__FILE__) . '/');
复制代码
  而为了方便前端网页开发,我还会手痒定义一个域名绝对路径,何为域名绝对路径呢?就是拿wordpress来说吧,例如http://localhost/wordpress/index.php/2016/10/31/001.html这个页面,那么他的域名绝对根目录就是http://localhost/wordpress/,以后引入图片的时候只需要相对在wordpress的根目录下引入图片就好了,以后移植到其他服务器,就不会影响了,因为这个域名绝对路径是在程序运行的时候就定义好的。这个域名根目录是在上面的站点根目录去改进的。
  只需要把网站的根目录改为域名,其他部分一样,开头加个请求方式就完美了。
  例:站点根目录为/var/www/html/wordpress/,改为http://www.domain.com/wordpress/
  1. define('ABSURL', $_SERVER['REQUEST_SCHEME'].'://'.str_replace($_SERVER['DOCUMENT_ROOT'], $_SERVER['SERVER_NAME'], ABSPATH));
复制代码


{ADDONVAR:SN}
序列号,应用版本和网站绑定的唯一识别码
{ADDONVAR:RevisionID}
应用版本的 ID
{ADDONVAR:RevisionDateline}
应用版本的发布时间
{ADDONVAR:SiteUrl}
站点URL
{ADDONVAR:ClientUrl}
客户端URL
{ADDONVAR:SiteID}
站点 ID
{ADDONVAR:QQID}
站点绑定的 QQID(非QQ号,只有绑定的站点有值)
{ADDONVAR:MyKey}
自定义动态变量(添加方法见下面的“应用发布配置文件”)
{ADDONVAR:MD5(***)}
以上值的MD5,自定义组合(*** 为以上值的名称,用逗号分隔)




帖子地址: 

本文来源于网友学习研究交流 www.caogen8.co,请以学习研究交流为主。
如果您没有贡献积分,可以直接免费领取,免费领取
如果你需要加入本学习研究交流,请以学习研究交流为目的,免责声明
如果找不到您要的资源,请搜索一下,点击搜索

发表回复

 懒得打字嘛,点击右侧快捷回复【最新发布】   【赞助草根吧享更多权益】
高级模式
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆 用百度帐号登录 一键登录:

本版积分规则

收藏帖子 返回列表 搜索
快速回复 返回顶部 返回列表