记录PHP的超全局变量$_SERVER

  $_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,

  它是这样定义的:

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。

  直接更方便:

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/

define(‘ABSURL‘, $_SERVER[‘REQUEST_SCHEME‘].‘://‘.str_replace($_SERVER[‘DOCUMENT_ROOT‘], $_SERVER[‘SERVER_NAME‘], ABSPATH));

  

时间: 2024-12-25 11:57:13

记录PHP的超全局变量$_SERVER的相关文章

PHP中的$_SERVER超全局变量

详细参数 PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用. $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关. $_SERVER['argv'] #传递给该脚本的参数. $_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式). $_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本.例如,“CGI/1.1”. $_

PHP 全局变量 - 超全局变量

PHP 全局变量 - 超全局变量 PHP 中的许多预定义变量都是"超全局的",这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION $GLOBALS - 引用全局作用域中可用的全部变量 $GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全

php全局变量 超全局变量

php中有许多超全局变量,这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS    引用全局作用域中可用的全部变量 $_SERVER    这种超全局变量保存关于报头.路径和脚本位置的信息. 能够在 $_SERVER 中访问的最重要的元素: 元素/代码 描述 $_SERVER['PHP_SELF'] 返回当前执行脚本的文件名. $_SERVER['GATEWAY_INTERFACE'] 返

PHP中的超全局变量

PHP中的超全局变量 PHP中的超全局变量 从PHP 4.2.0 开始,register_globals 的默认值为 off,这样一来,以前的很多可以直接使用的变量,如 $PHP_SELF 或者你设定的SESSION变量都不能用 “$变量名”的形式访问了,这可能会给你带来很多不变,但却有助于安全性的提高.访问这些变量,你需要使用PHP 超全局变量,如下: $_SERVER 变量由 Web 服务器设定或者直接与当前脚本的执行环境相关联.类似于旧数组 $HTTP_SERVER_VARS 数组.以前的

PHP超全局变量

PHP在设计的时候已经预定义了9个超级全局变量.8个魔术变量和13魔术函数,这些变量和函数可以在脚本的任何地方不用声明就可以使用. 在PHP开发会频繁的使用这些变量和函数,这些变量和函数可以方便的帮我们解决很多问题.下面详细的讲解下PHP中的超级全局变量.魔术变量和魔术函数. PHP超级全局变量(9个) $GLOBALS 储存全局作用域中的变量 $_SERVER 获取服务器相关信息 $_REQUEST 获取POST和GET请求的参数 $_POST 获取表单的POST请求参数 $_GET 获取表单

超全局变量

今天想写的内容叫做超全局变量. 为什么会想写这个东西的知识呢?一点是这个知识的内容很容易和JS里面的知识弄混淆,还有一点就是自己上课的时候其实听得不是很清楚,课后复习的时候才弄懂的,所以也想做个笔记,以后也会清楚一点. 首先,想了解什么是超全局变量,我们先介绍一下局部变量和全局变量吧.因为这大概也算一个层次性的问题. 变量的作用域:变量的作用域,就是指一个变量在哪能用在哪不能用,也就是一个变量其作用的有效范围!   局部变量:在一个函数内部定义的变量,其作用范围就是局部作用域,该变量也叫作局部变

PHP超全局变量$_SERVER

$_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建.不能保证每个服务器都提供全部项目:服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目. $_SERVER['HTTP_HOST']  请求头信息中的Host内容,获取当前域名. $_SERVER["SERVER_NAME"]  输出配置文件httpd.conf中的ServerName,一般情况下与HT

php的超全局变量

1. $_GET  $_POST  $_REQUEST php的输入包括get,post,post文件上传 php code:  $_REQUEST(get & post 有同名的参数 则以post优先),$_GET ,$_POST $_SERVER $_SESSION $_COOKIE $_FILES 8. $GLOBALS $sb='zq'; test(); function test(){ var_dump($GLOBALS['sb']); } echo '<hr/>'; $ob

php中的$_REQUEST超全局变量

PHP $_REQUEST是用于收集HTML表单提交的数据,PHP $_REQUEST属于PHP的超级全局变量. 以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form). 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件. 在这个实例中,我们指定文件来处理表单数据.如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名. 然后,我们可以使用超级全局变量