PHP内置方法大全--全局变量骗

全局变量篇


$GLOBALS

超全局变量,一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

$name="why";//定义变量name,并初始化    
function echoName()    
{    
//通过全局数组$GLOBALS来引用外部变量    
echo "myname is ".$GLOBALS['name']."<br>";    
}    
echoName();  

结果为: myname is why 。

globsl

global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了。

$name="why";//声明变量$name,并初始化    
function echoName1()    
{    
    //在函数echoName1()里使用global来声明$name    
    global  $name;    
    echo "the first name is ".$name."<br>";    
}     
echoName1();      

结果为:the first name is why

$_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

  • $_SERVER[‘HTTP_HOST’] 请求头信息中的Host内容,获取当前域名。

  • $_SERVER[“SERVER_NAME”] 输出配置文件httpd.conf中的ServerName,一般情况下与HTTP_HOST值相同,但如果服务器端口不是默认的80端口,或者协议规范不是HTTP/1.1时,HTTP_HOST会包含这些信息,而SERVER_NAME不一定包含。(主要看配置文件的设置)。

  • $_SERVER[“HTTP_USER_AGENT”] 获取用户相关信息,包括用户浏览器、操作系统等信息。

  • $_SERVER[‘HTTP_ACCEPT’] 当前请求的ACCEPT头部信息。

  • $_SERVER[“HTTP_ACCEPT_LANGUAGE”] 这个值是由浏览器发送,表明用户默认的语言设置,后面的q值表示用户对该语言的喜好程度。

  • $_SERVER[“HTTP_ACCEPT_ENCODING”] 大部分的现代浏览器都支持gzip压缩,并会把这一信息报告给服务器。这时服务器就会压缩过的HTML发送给浏览器。这可以减少近80%的文件大小,以节省下载时间和带宽。

  • $_SERVER[“HTTP_COOKIE”] 浏览器的cookie信息。

  • $_SERVER[“HTTP_CONNECTION”] 当前请求的连接情况。

  • $_SERVER[“HTTP_UPGRADE_INSECURE_REQUESTS”] 表示浏览器可读懂服务器发过来的请求,

  • $_SERVER[“HTTP_CACHE_CONTROL”] 表示浏览器是否会缓存这个页面信息。

  • $_SERVER[“PATH”] 当前脚本所在文件系统。

  • $_SERVER[“SystemRoot”] 当前服务器的操作系统。

  • $_SERVER[“COMSPEC”] 指向cmd.exe的路径。

  • $_SERVER[“PATHEXT”] 环境变量设置。

  • $_SERVER[“WINDIR”] 脚本指向的系统目录。

  • $_SERVER[“SERVER_SIGNATURE”] 包含服务器版本和虚拟主机名的字符串。

  • $_SERVER[“SERVER_SOFTWARE”] 服务器软件配置信息。

  • $_SERVER[“SERVER_ADDR”] 当前运行脚本的服务器的ip地址。

  • $_SERVER[“SERVER_PORT”] 服务器端口。

  • $_SERVER[“REMOTE_ADDR”] 浏览网页的用户ip。

  • $_SERVER[“DOCUMENT_ROOT”] 当前运行脚本所在的根目录。

  • $_SERVER[“REQUEST_SCHEME”] 服务器通信协议,是http或https。

  • $_SERVER[“CONTEXT_PREFIX”] 前缀。

  • $_SERVER[“CONTEXT_DOCUMENT_ROOT”] 当前脚本所在的文档根目录。

  • $_SERVER[“SERVER_ADMIN”] 服务器管理员信息。

  • $_SERVER[“SCRIPT_FILENAME”] 当前执行脚本的绝对路径。

  • $_SERVER [“REMOTE_PORT”] 用户连接到服务器时所使用的端口。

  • $_SERVER[“GATEWAY_INTERFACE”] 服务器使用的CGI规范的版本。

  • $_SERVER[“SERVER_PROTOCOL”] 请求页面时通信协议的名称和版本。

  • $_SERVER[“REQUEST_METHOD”] 请求提交数据的方式。

  • $_SERVER[“QUERY_STRING”] 服务器请求时?后面的参数。

  • $_SERVER[“REQUEST_URI”] 当前脚本路径,根目录之后的目录。

  • $_SERVER[“SCRIPT_NAME”] 当前脚本的路径。这在页面需要指向自己时非常有用。

  • $_SERVER[“PHP_SELF”] 当前正在执行脚本的文件名。

  • $_SERVER[“REQUEST_TIME”] 得到请求开始时的时间戳。

$_POST\$_GET\$_REQUEST

$_POST [用于接收post提交的数据]

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"/> 
Name:<input type="text" name="fname"/> 
<input type="submit"/> 
</form> 

<?php $name= $_POST['fname']; echo $name; ?> 

$_GET [用于获取url地址栏的参数数据]

<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>"/> 
Name:<input type="text" name="fname"/> 
<input type="submit"/> 
</form> 

<?php $name= $_GET['fname']; echo $name; ?> 

$_REQUEST [具有get,post的功能,但比较慢]

$_FILES

$_FILES超级全局变量很特殊,他是预定义超级全局数组中唯一的二维数组。其作用是存储各种与上传文件有关的信息,这些信息对于通过PHP脚本上传到服务器的文件至关重要。此函数中总共有5项:

  • $_FILES[“userfile”][“error”]

    $_FILES[“userfile”][“error”]数组值提供了与上传尝试结果有关的重要信息。总共有5个不同的返回值,其中一个表示成功的结果,另外4个表示在尝试中出现的特殊错误。灭个返回值的名字和将在后面介绍。

    在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)
    UPLOAD_ERR_OK
    值:0; 没有错误发生,文件上传成功。
    UPLOAD_ERR_INI_SIZE
    值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
    UPLOAD_ERR_FORM_SIZE
    值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
    UPLOAD_ERR_PARTIAL
    值:3; 文件只有部分被上传。
    UPLOAD_ERR_NO_FILE
    值:4; 没有文件被上传。
    值:5; 上传文件大小为0.

  • $_FILES[“userfile”][“name”]

    $_FILES[“userfile”][“name”]变量指定客户端机器上声明的文件最初的名字,包括扩展名。因此,如果浏览器一个名为vacation.jpg的文件,并通过表单上传,则此变量的值将是vacation.png。

  • $_FILES[“userfile”][“size”]

    $_FILES[“userfile”][“size”]变量指定从客户端上传的文件的大小,以字节为单位。因此,在vacation.jpg文件的例子中,此函数可能赋值为5253,大约为5kb.

  • $_FILES[“userfile”][“tmp_name”]

    $_FILES[“userfile”][“tmp_name”]变量指定上传到服务器后为文件赋予的临时名。这是存储在临时目录(由PHP指令upload_tmp_dir指定)中时所指定的文件名。

  • $_FILES[“userfile”][“type”]

    $_FILES[“userfile”][“type”]变量指定从客户端上传的文件的mime类型。因此,在vacation.jpg文件的例子中,此变量会赋值为image/jpeg。如果上传的是PDF,则赋值为application/pdf。因为这个变量有时会得到意外的结果,所以应当在脚本中显示地进行验证。

$_COOKIE\$_SESSION

$_COOKIE [用于获取与setCookie()中的name 值]

  • cookie通过HTTP Headers从服务器端返回到浏览器上,首先,服务器端在响应中利用Set-cookie header来创建一个cookie,然后,浏览器在它的请求中通过cookie header(包含这个已经创建的cookie),并且返回至服务器,从而完成浏览器的验证。

    Setcookie(string name, string value, int expire,string path, string domain, int secure);
    

    其中name是cookie变量名称标识,你在php中将能象使用普通变量名相同来用他引用cookie变量。value是cookie变量的初始值,expire 表示该cookie变量的有效时间;path 为该cookie变量的相关路径;domain 表示cookie变量的网站;secure 则需在 https 的安全传输时才有效。

  • 接收和处理Cookie
    PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单。

    比如设置一个名为 MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为 $myCookie,这个变量的值就是Cookie的值。数组同样适用。另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。
    分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)

    1 echo \$MyCookie;
    2 echo \$CookieArray[0];
    3 echo \$_COOKIE["MyCookie"];
    4 echo \$HTTP_COOKIE_VARS["MyCookie"]; 
    
  • 删除Cookie
    要删除一个已经存在的Cookie,有两个办法:

    1 SetCookie("Cookie", "");
    2 SetCookie("Cookie", "value" , time()-1 / time() );
    
  • 使用Cookie的限制
    1、必须在HTML文件的内容输出之前设置;
    2、不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果。
    3、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。

$_SESSION [用于存储session的值或获取session中的值]

  • 不同于cookie技术,将会话数据储存在服务器端。
    如何区分会话数据属于那台浏览器?
      1.将不同会话的session数据分别储存,存在session数据区。
      2.为每一个数据区,设置一个唯一的标示。
      3.将唯一标示,分配到浏览器端,浏览器请求携带凭证。
      
  • session技术,基于cookie技术。session的标示session_id储存在浏览器cookie中。
    对比cookie:
      会话数据本身,安全性较高。
      请求时携带的数据量,较少。

  • 开启session,php核心session功能生成唯一标示,分配给浏览器,储存在数据区。
    语法:

      session_start();
    
  • 管理session数据
      $_SESSION完成所有的功能。

    //增加

    $_SESSION['name'] = 'admin';
    
    $_SESSION['pwd'] = '123';
    

    //删除

    unset($_SESSION['name']);
    $_SESSION['pwd'] = 'abc';
    

    //查询

    $var_dump($_SESSION['name']);
    

tips:清空session操作,删除所有的session数据:$_SESSION=array();

有效期:
session在浏览器关闭时失效。

$_ENV

PHP中的$_ENV存储了一些系统的环境变量,因为牵扯到实际的操作系统,所以不可能给出$_ENV的完整列表。

$_ENV为空的可能原因:

你的php.ini的variables_order值为”GPCS”,也就是说系统在定义PHP预定义变量时的顺序是 GET,POST,COOKIES,SERVER,没有定义Environment(E),你可以修改php.ini文件的 variables_order值为你想要的顺序,如:”EGPCS”。这时,$_ENV的值就可以取得了。

EGPCS是Environment、Get、Post、Cookies、Server的缩写,这是PHP中外部变量来源的全部范围,可以用print_r($_ENV)来打印这个变量,查看他的数据。

注意,生产环境下,$_ENV都是空数组,主要是为了安全起见,不让它获取操作系统信息!

猜你喜欢

转载自blog.csdn.net/angus_01/article/details/80021302
今日推荐