6)PHP,预定义变量
预定义变量也叫超全局变量:
:预定义变量又叫超全局变量,包括:
$_GET, $_POST, $_SERVER, $_REQUEST, $GLOBALS, $_COOKIE, $_SESSION, ..........(大约10个)
:作用域问题
php中,自定义的变量的作用域,分两种:全局作用域(函数外),局部作用域(函数内)。
但:
预定义变量的作用域称为“超全局作用域”:全局作用域 + 局部作用域的总和(函数内外全都可用)
:数据类型问题:
超全局变量都是数组!
(1)$_GET变量(数组)
get这个词,常常出现在这里:<form action=”abc.php” method=”get” >.....</form>
这叫做“表单以get方式提交数据”
则$_GET这个预定义数组变量,就是指以这种方式提交的所有数据的集合(数组)
对应来说,也可以以post方式提交数据
注意:get这个词,似乎没有中文翻译。
实际上,在网页中,以get方式提交数据有多种形式:
形式一:
<form action=”abc.php” method=”get” >
项目1: <input type=”text” name=”uName” />
项目2: <input type=”password” name=”uPswd” />
<input type=”submit” value=”提交” />
</form>
其作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php)
*********************************************************************************************************************************
形式二:
<a href=”abc.php?uName=test1&uPswd=” > 文字。。。</a>
其作用是:用户点击链接后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php),这种请求也是get请求
**********************************************************************************************************************************
形式三:
<script>
location.href = “abc.php?uName=test1&uPswd=”; //利用location对象的属性href
</script>
其作用是:当该行语句执行的时候(通常其实是在函数中),会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php),这种请求也是get请求
***********************************************************************************************************************************
形式四:
<script>
location.assign( “abc.php?uName=test1&uPswd=”); //利用location对象的方法assign()
</script>
其作用是:当该行语句执行的时候(通常其实是在函数中),会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php),这种请求也是get请求
(2)$_POST变量(数组)
类似$_GET变量(数组),$_POST代表页面通过post方式提交过来的数据所形成的数组。
post提交数据,通常只有一种形式:
<form action=”abc.php” method=”post” > 项目1: <input type=”text” name=”uName” /> 项目2: <input type=”password” name=”uPswd” /> <input type=”submit” value=”提交” /> </form>
其作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php)
接收post数据的形式为: (在abc.php网页中) <?php $v1 = $_POST[‘uName’]; //单引号也可以用双引号,本质是一个字符串,其实是数组的键名(下标) $v2 = $_POST[‘uPswd’]; //该键名必须跟提交的时候的名字完全一致(区分大小写)
也可以显示所有post数据: var_dump($_POST) ?>
通常,网页中的form表单,一般都用post方式,get方式主要体现在其他3种形式。
(3)$_REQUEST变量(数组)
$_REQUEST数组,其实并不是一个独立的数据来源,而是$_POST数据和$_GET数据的“总和”
即$_REQUEST数组中包括了所有$_POST数据和$_GET数据——其实是由系统内部自动存储的。
通常,$_POST数据和$_GET数据不会“同时出现”,$_REQUEST数组就代表了其中之一。
下面来看看:get和post数据同时提交的情形:
此时,一般就只有一种html语法形式会出现该情形,如下:
<form action="abc.php?a=5&b=10" method="POST" > ...
项目1: <input type=”text” name=”uName” />
项目2: <input type=”password” name=”uPswd” />
<input type=”submit” value=”提交” />
</form>
8 则此时,uName和uPswd两个数据以post方式提交给abc.php,
9 并,同时:a=5和b=10两个数据,以get方式提交给abc.php
10 则在页面abc.php中:
这样取得get数据:
$v1 = $_GET[‘a’];
$v2 = $_GET[‘b’];
这样取得post数据:
$v3 = $_POST[‘uName’];
$v4 = $_POST[‘uPswd’];
但,也可以这样取(全有了):
$v1 = $_REQUEST[‘a’];
$v2 = $_REQUEST[‘b’];
$v3 = $_REQUEST[‘uName’]
$v4 = $_REQUEST[‘uPswd’]
当get数据和post数据同时提交并其中有重名的时候,情况怎么样呢?
说明:
1,尽量避免重名;
2,如果重名了,此时$_REQUEST只会记录(存储)其中一个数据(要么post数据,要么get数据)
3,至于记录的是哪个,是有php.ini中的一个设置项来决定:
3.1 request_order = “GP”; //这是默认值,G代表GET,P代表POST
3.2 含义是:先存储GET数据,再存储POST
3.3 可见如果重名,此时POST就会覆盖GET数据
3.4 改为:request_order = “PG”, 顺序反过来
然后去php.ini中,修改为:request_order = “PG”
同样的数据,结果却为:
- $_GET, $_POST, $_REQUEST三种数据是相互独立的。
(4)$_SERVER变量(数组)
该变量存储了服务器端或客户端的一些请求信息或设置信息,比较多,而且不同的服务器和不同的请求页面,其数据项都可能不同。
• 常用的有:
o REMOTE_ADDR, 用户的IP地址
o SERVER_ADDR: 服务器端的IP地址
o SERVER_NAME: 服务器名(主机名)
o DOCUMENT_ROOT: 站点绝对路径(其实就是主机设置中的DocumentRoot
o PHP_SELF:当前网页的文件路径
o QUERY_STRING: 表示一个get请求的整体字符串,类似这样:
http://www.abc.com/abc.php?a=5&b=10连接地址中的“a=5&b=10”
• 输出所有项(可能每台服务器有所差异)
(5)$GLOBALS变量(数组)
似乎是一个多余的变量:它只是把我们自己定义的所有全局变量存储到该数组中:
变量名就是该数组的下标(键名),变量值就是对应的值。
)
6)PHP,预定义变量的更多相关文章
- PHP预定义变量
* PHP预定义 * 预定义变量 * $_GET - 接收客户端以请求类型为GET方法发送的数据内容 * $_POST - 接收客户端以请求类型为POST方法发送的数据内容 * $_REQUEST - ...
- linux中位置参数变量和预定义变量
位置参数变量 预定义变量
- 深入理解PHP内核(八)变量及数据类型-预定义变量
原文链接:http://www.orlion.ga/249/ PHP脚本在执行的时候用户全局变量(在用户空间显示定义的变量)会保存在一个HashTable数据类型的符号表中(symbol_table) ...
- Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1
Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1.1.1 C++内建变量(__LINE__).... 1.1.2 ...
- PHP学习笔记1.2——预定义变量参考
预定义变量和用户自定义变量在使用上没有区别,大多数预定义变量的执行结果都是服务器的相关信息(如:版本号.路径.错误参数等),所以我们很少将其用于网站前台开发,如果被别有用心得人知道了后,会严重威胁服务 ...
- 预定义变量 - PHP手册笔记
预定义变量将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回头.超全局变量是在全部作用域中始终可用的内置变量.在函数或方法中无需执行global $variable,就可以访问它们. $GO ...
- PHP预定义变量$_SERVER
PHP预定义变量$_SERVER $_SERVER 是一个包含诸如头部(headers).路径(paths)和脚本位置(script locations)的数组.数组的实体由 web 服务器创建,不能 ...
- Shell 变量详解教程之位置变量与预定义变量。
Shell 变量分为3部分,分别是用户自定义变量.位置变量和预定义变量. 一. 自定义变量 那么,什么是变量呢?简单的说,就是让某一个特定字符串代表不固定的内容,用户定义的变量是最普通的Shell ...
- [Shell]Bash变量:自定义变量 & 环境变量 & 位置参数变量 & 预定义变量
--------------------------------------------------------------------------------- 变量是计算机内存的单元,其中存放的值 ...
- $_ENV和$GLOBALS预定义变量
1,$_ENV该全局数组可以获取环境变量,在php5.3中默认禁用,但是可以在php.ini中启用. variables_order="EGPCS" 2,$GLOBALS一个包含了 ...
随机推荐
- 10 —— node —— 获取文件在前台遍历
思想 : 前台主动发起获取 => ajax 1,前台文件 index.html <!DOCTYPE html> <html lang="en"> &l ...
- VNC连接桌面
1.#yum -y install vnc *vnc-server* 2.修改VNCServer主配置文件 #vim /etc/sysconfig/vncservers 复制最后两行并去掉行首注释符, ...
- javascript实现抽奖程序
昨天开年会的时候看到一个段子说唯品会年会抽奖,结果大奖都被写抽奖程序的部门得了,CTO现场review代码. 简单想了一下抽奖程序的实现,花了十几分钟写了一下,主要用到的知识有数组添加删除,以及ES5 ...
- HDU——Monkey and Banana 动态规划
Monkey and Banana Time Limit:2000 ...
- swtich多个case使用同一操作
switch (expression) { case 'status01': case 'status02': case 'status03': alert('resultOne'); break; ...
- java伪代码 (第一章)
在<大道至简>第一章中,周爱民先生引用一则<愚公移山>的寓言,引出了编程的根本:顺序.选择.循环.汤问篇中所述的愚公移山这一事件,我们看到了原始需求的产生---“惩山北之塞,出 ...
- 运行xv6
我们使用Qemu在Ubuntu下运行 1. 安装Qemu sudo apt-get install qemu 执行 qemu-system-i386 ,如果弹出Qemu界面说明安装成功了 2. 编译x ...
- 《C Primer Plus》- 第一章 初试C语言
本笔记写于2020年1月25日. 从今天开始,我要全面的.彻底的将未来计划中所有的知识重新规划学习一遍,并整理成一套全面的笔记体系.为我将来的职业打下坚实的基础.而所有的一切从C语言开始. 本系列文章 ...
- 高级变量类型(列表,元组,字典,字符串,公共方法,变量高级)for循环
Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 -- 非零即真 假 False 0 复数型 (co ...
- django的model字段在保存的时候做预处理怎么办?
django的model字段在保存的时候做预处理怎么办? 比如这个model: class Book(Model): publish_date = DateField() 但是在保存时,用户输入数据是 ...