购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6.4 系统预定义数组

对于全部脚本而言,PHP提供了大量的预定义变量。这些变量将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回头。这些变量大多以数组的形式被定义。

6.4.1 $_SERVER

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

表6-1 $_SERVER数组

在浏览器打印出$_SERVER数组的代码如下:


     <?php
     echo "<pre>";
     print_r($_SERVER);
     ?>

浏览器的输出结果如下:


     Array
     (
         [HTTP_HOST] => localhost
         [HTTP_CONNECTION] => keep-alive
         [HTTP_CACHE_CONTROL] => max-age=0
         [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9, image/webp,*/*;q=0.8
         [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
         [HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36
         [HTTP_ACCEPT_ENCODING] => gzip, deflate, sdch
         [HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8
         [HTTP_COOKIE] => PHPSESSID=e1bbc84e23bf85691e7c5a4ab07ee0de; pgv_pvi=4369311744; pgv_si=s1775918080; CNZZDATA155540=cnzz_eid%3D1811041545- 1463297631-%26ntime%3D1463303031
         [PATH] => /usr/bin:/bin:/usr/sbin:/sbin
         [SERVER_SIGNATURE] => 
         [SERVER_SOFTWARE] => Apache/2.4.16 (Unix) PHP/7.0.5
         [SERVER_NAME] => localhost
         [SERVER_ADDR] => ::1
         [SERVER_PORT] => 80
         [REMOTE_ADDR] => ::1
         [DOCUMENT_ROOT] => /Library/WebServer/Documents
         [REQUEST_SCHEME] => http
         [CONTEXT_PREFIX] => 
         [CONTEXT_DOCUMENT_ROOT] => /Library/WebServer/Documents
         [SERVER_ADMIN] => you@example.com
         [SCRIPT_FILENAME] => /Library/WebServer/Documents/book/str.php
         [REMOTE_PORT] => 59377
         [GATEWAY_INTERFACE] => CGI/1.1
         [SERVER_PROTOCOL] => HTTP/1.1
         [REQUEST_METHOD] => GET
         [QUERY_STRING] => 
         [REQUEST_URI] => /book/str.php
         [SCRIPT_NAME] => /book/str.php
         [PHP_SELF] => /book/str.php
         [REQUEST_TIME_FLOAT] => 1463828978.149
         [REQUEST_TIME] => 1463828978
         [argv] => Array
             (
             )
     
         [argc] => 0
     )

6.4.2 $_GET和$_POST数组

页面之间传递信息可通过GET和POST两种方式完成。$_GET和$_POST可分别用来接收这两种方式传递过来的数据。使用GET方法在页面间传递数据时,所传递的数据内容会显示在浏览器地址栏,而POST方式则不会。

创建一个index.html文件,文件的代码如下:


     <html>
     <head></head>
     <body></body>
     <form action="get.php" method="get">
     name:<input type='text' name='name'>
     phone:<input type='text' name='phone'>
     <input type='submit' value='submit'>
     </form>
     
     </html>

然后创建get.php文件,代码如下:


     <?php
     echo "get method:<br/>";
     echo "name is " . $_GET['name'] . ",phone is " . $_GET['phone'];
     ?>

在index.html页面填写name和phone,单击submit按钮,数据将会被传递到get.php,在浏览器地址栏也会出现所填写的数据,如图6-1所示。

图6-1 GET方法接收数据

更改index.html的文件代码action="post.php"method="get",使用POST的方式传值给post.php。post.php的代码如下:


     <?php
     echo "post method:<br/>";
     echo "name is " . $_POST['name'] . ",phone is " . $_POST['phone'];
     ?>

POST方式传递的数据没有出现在浏览器中,结果如图6-2所示。

图6-2 POST方法接收数据

6.4.3 $_FILES数组

$_FILES数组用于获取通过POST方法上传文件的相关信息,如果为单个文件上传,那么该数组为二维数组,如果为多个文件上传,那么该数组为三维数组。

建立一个file.html演示上传文件,其中的代码如下:


     <html>
     <head></head>
     <body></body>
     <form enctype="multipart/form-data" action="file.php" method="POST">
     
         Send this file: <input name="userfile" type="file" />
         <input type="submit" value="Send File" />
     </form>
     </html>

新建一个用于接收文件信息的PHP文件file.php,代码如下:


     <?php
     echo "<pre>";
     print_r($_FILES);
     ?>

在file.html页面选择文件后,单击Send File按钮,将会在页面输出以下信息:


     Array
     (
         [userfile] => Array
             (
                 [name] => Screen Shot 2016-05-12 at 18.13.24.png
                 [type] => image/png
                 [tmp_name] => /private/var/tmp/phplVHp3W
                 [error] => 0
                 [size] => 344925
             )
     
     )

6.4.4 $_SESSION和$_COOKIE数组

$_COOKIE[]全局数组存储了通过HTTP COOKIE传递到脚本的信息,PHP可通过setcookie()函数设置COOKIE的值,用$_COOKIE[]数组接收COOKIE的值,$_COOKIE[]数组的索引为COOKIE的名称。

$_SESSION[]数组用于获取会话变量的相关信息。

6.4.5 $_REQUEST[]数组

默认情况下,$_REQUEST[]数组包含了$_GET、$_POST和$_COOKIE的数组。 DNhOyX8V5UdrBV1GxufuRSSPelTu5D4sRIqvVvZX2x6tr/33uYaEq8GfIB/FYc3T

点击中间区域
呼出菜单
上一章
目录
下一章
×