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

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

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

超全局变量:

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

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

超链接页面:

<?php

    //对中文url编码
    $str = urlencode("长沙你好");
    echo "<a href='GET.php?city=".$str."&name=lizzy'>传送数据</a>";
?>

GET页面正常接收数据:

 <?php

    echo "<pre>";
    echo print_r($_GET);
    echo "</pre>";

    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安全)
界面代码:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
</head>

<h1>用户注册</h1>
<form action="POST.php" method="post">  
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="text" name="password"/><br/>
    性别:<input type="radio" name="sex" value="female" /> 女 <input type="radio" name="sex" value="man"/> 男<br/>
    你的爱好:
    <input type="checkbox" name="hobby[]" value="唱歌">唱歌
    <input type="checkbox" name="hobby[]" value="跳舞">跳舞
    <input type="checkbox" name="hobby[]" value="游泳">游泳
    <input type="checkbox" name="hobby[]" value="健身">健身<br/>
    你的所在地:
    <select name="city">
        <option value="changsha">长沙</option>
        <option value="beijing">北京</option>
        <option value="shenzhen">深圳</option>
    </select><br/>
    个人介绍:
    <textarea rows="10" name="introduce" cols="30">
    </textarea><br/>
    选择图片:
    <input type="file" name="myphoto"><br/>

    <input type="submit" value="提交"/>
</form>
</html>

接收数据代码:

<?php

    //接收
    echo "<pre>";
    echo print_r($_POST);
    echo "</pre>";

    $name = $_POST['username'];
    $pwd = $_POST['password'];
    $hobbies = $_POST['hobby'];
    echo "个人信息如下:<br/>";
    echo "用户名:".$name.";密码:".$pwd.";";
    // print_r($hobbies);
    echo "<br/>该人的爱好:";
    foreach ($hobbies as $key => $value) {
        echo "<br/>$key=$value";
    }

    $city = $_POST['city'];
    echo "<br/>你的所在地是:".$city;
    echo "<br/>个人介绍如下:";
    $intro = $_POST['introduce'];
    echo "<br/>$intro";
    $photo = $_POST['myphoto'];
    echo "<br/>所选照片是:".$photo;
?>

get与post数据区分:
get数据已经主要是:
(1)<a></a> 超链接默认是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管理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 6.4.1 PHP超全局数组(预定义变量)概述 超全局数组(预定义变量) • 服务器变量: $_SERVER...
    曹渊说创业阅读 4,012评论 0 1
  • PHP 为所有脚本提供了大量的预定义变量(predefined variables)。 这些变量包括了以下这些东西...
    咚门阅读 4,916评论 1 4
  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 8,335评论 4 97
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,771评论 19 139
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 6,666评论 2 38