PHP中的预定义超全局数组
- 定义
超全局变量,是在全部作用域中始终可用的内置变量。
PHP中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。
在函数或方法中无需执行 global $variable 来访问它们。
使编写程序更方便快捷。
- 内容
$_GET
$_POST
$_REQUEST
$_SERVER
$_COOKIE
$_SESSION
$_GLOBALS
$_ENV
$_FILES
- $_GET
通过URL参数传递给当前脚本的变量的数组。
基本用法:1、客户机(浏览器)通过超链接<a></a>传送信息给服务器;
2、客户机(浏览器)通过表单form传送信息给服务器(但推荐表单提交用post方法);
3、客户机(浏览器)通过header提交。
案例1:超链接中用GET方法传送数据
get.php:
<?php
//超链接提交方式为get
echo "<a href='get1.php?city=beijing&name=liLei'>超链接get方法传送数据</a>";
?>
get1.php:
<?php
echo "<pre>";
print_r($_GET);
echo "</pre>";
echo "<br/>".$_GET['city']; //通过下标名来取某个值
?>
结果如下:


案例2:IE6(及其更低级版本)的奇数中文乱码问题
get.php:
<?php
//超链接提交方式为get
//编码
$str=urlencode("张家口");
echo "<a href='get1.php?city=".$str."&name=liLei'>超链接get方法传送数据</a>";
?>
get1.php
<?php
echo "<pre>";
print_r($_GET);
echo "</pre>";
//判断是否收到值,用empty函数
if(empty($_GET['city'])){
echo "没有收到值";
}else{
//解码
echo "<br/>".urldecode($_GET['city']);
}
?>
结果如下:

案例3:表单中用get方式提交的信息
<form action="xx.php" method="get">
......
</form>
案例4:header默认用get方法提交
<?php
header("Location: a.php?name=xiaoMing");
?>
- $_POST
$_POST:通过HTTP POST方法传递给当前脚本的变量的数组。
基本用法:客户机(浏览器)通过表单用post方式传送信息给服务器,
各种表单输入项数据的获取:text、password、radio、checkbox、file、select、textarea、hidden、image、button。
注意:表单中有些数据的提交必须使用post,比如上传文件。
案例:表单用post方式提交
post.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>post方法提交表单信息</title>
</head>
<body>
<form action="post1.php" method="post">
<!--文本型-->
用户名:<input type="text" name="userName"/><br/><br/>
<!--密码型-->
密码:<input type="password" name="pwd"/><br/><br/>
<!--单选框-->
性别:<input type="radio" name="sex" id="female" value="female"/><label for="female">女</label>
<input type="radio" name="sex" id="male" value="male"/><label for="male">男</label><br/><br/>
<!--复选框-->
爱好:<input type="checkbox" name="hobby[]" value="唱歌" id="sing"/><label for="sing">唱歌</label>
<input type="checkbox" name="hobby[]" value="读书" id="read"/><label for="read">读书</label>
<input type="checkbox" name="hobby[]" value="健身" id="sport"/><label for="sport">健身</label><br/><br/>
<!--下拉框-->
所在地:<select name="site">
<option value="河北">河北</option>
<option value="北京">北京</option>
<option value="天津">天津</option>
</select><br/><br/>
<!--文件-->
照片:<input type="file" name="photo"/><br/><br/>
<!--文本域-->
自我介绍:<textarea name="selfIntro" rows="10" clos="30"></textarea><br/><br/>
<!--提交与重置-->
<input type="submit" value="注册"/>
<input type="reset" value="重置"/>
</form>
</body>
</html>
post1.php:
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
//按键名取$_POST中的内容
$name=$_POST['userName'];
echo "名字:".$name."<br/>";
$hobbies=$_POST['hobby'];
echo "爱好:";
foreach($hobbies as $key => $value){
echo $value." ";
}
?>
结果如下:



注意:1、要想获取复选框选中的全部的值,需要把name写成数组形式,如下:
<input type="checkbox" name="hobby[]" value="唱歌" id="sing"/>
2、这里文件file信息只能取得文件名。
- $_REQUEST
默认情况下包含了$_GET,$_POST和$_COOKIE的数组。
注意:由于$_REQUEST中的变量通过GET、POST和COOKIE输入机制传递给脚本文件,因此可以被远程用户篡改而并不可信。
所以尽量不要使用$_REQUEST,如果不确定是GET提交还是POST提交,可以用如下写法:
if($_SERVER['REQUEST_METHOD']=="GET"){
$_GET['XX'];
}
if($_SERVER['REQUEST_METHOD']=="POST"){
$_POST['XX'];
}
- $_SERVER
$_SERVER:其中主要包含了HTTP请求行和消息头的信息,还有服务器相关的一些信息。
取出$_SERVER中内容的程序:
<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
?>
结果如下:

其中:1、请求该页面的客户机IP地址——REMOTE_ADDR
2、服务器端apache和php版本号——SERVER_SOFTWARE
3、决定get/post方法接收数据——REQUEST_METHOD
- $_ENV
$_ENV:用于获取服务器端环境信息。
注意:默认情况下不能使用$_ENV,你会得到空值,这是出于对安全的考虑。
如果希望使用,则需要修改配置文件php.ini中
variables_order="EGPCS"
但是在开发环境下,我们不建议这样配置。
结果如下:

PHP中的预定义超全局数组的更多相关文章
- PHP中预定义超全局数组(变量)
PHP中许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用.超全局变量除了具有全局变量特点外,在函数或方法中无需执行global $variable:就可以访问它们. 提供超全 ...
- PHP 预定义超全局数组/变量
1.超全局变量:不用定义声明即可用.PHP有九种 2.$_GET:通过参数传递给当前脚本的变量的数组 浏览器页面-->(http协议)->apache-->php module--& ...
- PHP基础-PHP中预定义的超全局数组
预定义数组: 自动全局变量---超全局数组 1. 包含了来自WEB服务器,客户端,运行环境和用户输入的数据 2. 这些数组比较特别 3. 全局范围内自动生效,都可以直接使用这些数组 4. 用户不能自定 ...
- php学习笔记 [预定义数组(超全局数组)]
<?php 预定义数组: * 自动全局变量---超全局数组 * * 1.包含了来自WEB服务器,客户端,运行环境和用户输入的数据 * 2.这些数组比较特别 * 3.全局范围内自动生效,都可以直 ...
- 【二十三】php之预定义超全局变量
php提供了九种预定义超全局变量: $_GET.$_POST.$_REQUEST.$_SERVER.$_ENV.$_FILE. $_COOKIE.$_SESSION. $GLOBALS 1.$_GET ...
- 2016/3/20 数组定义 数组遍历 超全局数组 数组元素设置(in_array() 、array_reverse()、count()、array_unique()、unset()、array_values、array_merge、array_push) 列表实例
一.数组定义 php数组与其他语言的数组的不同: 其他例如java语言 :同一种类型数据的集合. php:数组可以存储任何类型的数据.同一个数组中可以放int类型也可以放string类型 ①索引数组的 ...
- PHP学习1.5-预定义超全局数组变量
1.PHP 预定义的超全局变量数组 特性: a.特殊的数组,操作方式没有区别 b.不用声明,php脚本中默认存在,因为在php中不用定义,所以在自定义变量是应避免和预定的全局变量同名 c.在全局范围内 ...
- $_GLOBALS超全局数组和global定义的全局变量区别?
全局变量:主程序中定义的变量(函数外部),只能在主程序中使用,在函数内部不能调用 背景:解决在函数内部调用全局变量的问题 解决方法: 1.在函数内部声名全局变量 <?php public $va ...
- PHP开发——超全局数组变量
概述 l JS中的变量分两类:局部变量.全局变量. l PHP中的变量分三类:局部变量.全局变量.超全局变量. l 局部变量:在函数内部声明的变量,就是局部变量.函数执行完毕,局部变量就消失了. ...
随机推荐
- csdn 刷分小工具(刷了1000多被封了,慎用)
先上图,周第一, 月第六代码未整理,比较乱,仅仅供参考(cookie已经废了,号被封了,哈哈) using System; using System.Collections.Generic; usin ...
- 记RedisDesktopManager的一次崩溃
redis3.2的配置文件中有bind监听地址 bind 192.168.42.131默认bind的填写的127.0.0.1这样配置是只允许本地访问,如果想远程访问就改为本机网卡绑定的ip地址.我这边 ...
- SilkTest天龙八部系列4-ChildWin
一直觉得SilkTest的ChildWin不好理解,今天大致看了一下,其实它和DialogBox每啥区别,也是一种window类型.帮助里面说,典型的ChildWin就是文档窗口.在Windows上, ...
- [HTTP] HTTP Verb
HEAD: HEAD / HTTP/1.1 nc.exmaple.com HEAD is a interesting method, it allow you to get a header of f ...
- git 设置
系统乱码 项目中的编码统一设置为UTF-8编码. 设置系统的语言设置为 zh_UTF-8,把 export LANG=zh_CN.UTF-8 保存到~/.profile文件里. $ env|grep ...
- 容器大小的改变以及容器操作可能使迭代器失效、vector对象的容量变化
1 改变容器的大小 我们可以使用resize来增加或缩小容器,与往常一样,array不支持resize.如果当前大小大于所要求的大小,容器后面的元素会被删除:如果当前大小小于新大小,会将新元素添加到容 ...
- 从源码角度深入理解Toast
Toast这个东西我们在开发中经常用到,使用也很简单,一行代码就能搞定: 1: Toast.makeText(", Toast.LENGTH_LONG).show(); 但是我们经常会遇到这 ...
- 修改浏览器User-Agent
IE: 1,F12进入开发人员工具 2,工具->更改用户代理字符串->自定义 3,在"友好名称"中填入"IE9",在"用户代理字符串&qu ...
- Objective-c中的设计模式
如果你会写算法,又理解设计模式,你就牛逼了.后面一段时间我会尽可能易懂的描述来讲解iOS中的设计模式,并且每个设计模式都会有对应的demo:https://github.com/goodyboy6/D ...
- 转载-优秀程序员的十个tips
理解技术债务 技术债务就像信用卡一样,会有很高的利息,时间越长,修复所化的代价就越大.团队应该培养一种保证设计质量的文化,鼓励重构.同时应当鼓励其它有关代码质量的实践. 保持对原理的好奇心 做Andr ...