php预定义超全局变量、超全局数组

一、超全局变量:
除了有全局变量的特点外,可以无须声明,直接使用。
全局变量:

//全局变量
$a = 23;
function test() {
    global $a;//使用到全局$a
    $a = 12;
}
test();
echo $a."
";

超全局变量:

//超全局变量
echo "
";
echo print_r($_SERVER);
echo "
";

二、php提供了九种超全局数组的,可以更方便快捷的写出程序:
1、$_GET:
通过URL参数传递给当前脚本的变量的数组。
基本用法:
(1)客户机(浏览器)通过超链接传送信息给服务器;(默认get)
(2)客户机(浏览器)通过表单传递信息给服务器-->推荐表单数据使用POST提交。

超链接页面:

传送数据";
?>

GET页面正常接收数据:

 ";
    echo print_r($_GET);
    echo "
"; echo "--".$_GET['city']; ?>

_GET也可以接收表单以get方式提交数据。
使用细节:
(1)判断是否收到值:

if (empty($_GET['city'])) {
    echo "没有收到city";
} else {
    echo "有city:".$_GET['city'];
}

(2)$_GET使用陷阱,绝对不能启用php.ini文件中的register_globals = off 需要关闭,否则小心sql注入。

2、$_POST:
通过http post方式提交的数据,会被封装到$_POST 超全局数组中。有些数据传输必须post,比如传文件。。。(表单建议post安全)
界面代码:




    


用户注册

用户名:
密码:
性别:
你的爱好: 唱歌 跳舞 游泳 健身
你的所在地:
个人介绍:
选择图片:

接收数据代码:

";
    echo print_r($_POST);
    echo "
"; $name = $_POST['username']; $pwd = $_POST['password']; $hobbies = $_POST['hobby']; echo "个人信息如下:
"; echo "用户名:".$name.";密码:".$pwd.";"; // print_r($hobbies); echo "
该人的爱好:"; foreach ($hobbies as $key => $value) { echo "
$key=$value"; } $city = $_POST['city']; echo "
你的所在地是:".$city; echo "
个人介绍如下:"; $intro = $_POST['introduce']; echo "
$intro"; $photo = $_POST['myphoto']; echo "
所选照片是:".$photo; ?>

get与post数据区分:
get数据已经主要是:
(1) 超链接默认是get提交;
(2)header("Location:ok.php?aa=lizzy");这样的方式跳转的时候也是以get方式提交给ok.php。
post和get区别:
(1)安全性:post>get
(2)数据传输大小:[浏览器控制的]post>get
(3)保存到收藏夹:get比较方便。

3、$_REQUEST:
$_REQUEST中可以包含$_GET/$_POST/$_COOKIE这些数组的信息。

4、$_SERVER:
$_SERVER主要包含了http请求行和消息头的信息,同时还有服务器自己的一些信息,比如:DOCUMENT_ROOT、SCRIPT__FILENAME...

5、$_ENV:
该全局数组可以获取环境变量。 在php5.3中默认禁用,可以在php.ini中启用;variables_order = "EGPCS";

6、$_FILE;

7、$_COOKIE:
可以用来在多个页面共享一些信息,cookie是被HTTP协议支持的,浏览器在向服务器请求一个页面时,服务器返回HTTP报文+数据,浏览器会解析从服务器接收的HTTP报文,从而做相应的操作。

8、$_SESSION:
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

9、$GLOBALS:
一个包含了全部变量的全局组合数组,变量的名字就是数组的键,同时一个自定义的全局变量也会自动被$_GLOBALS管理。

你可能感兴趣的:(php预定义超全局变量、超全局数组)