php预定义变量

综述

1.预定义变量又叫超全局变量,包括:$_GET,$_POST,$_SERVER,$_REQUEST,$GLOBALS,$_COOKIE,$_SESSION等大约10个

2.作用域问题

     php中,自定义的变量的作用域分两种:全局变量(函数外)、局部作用域(函数内)

      但预定义变量的作用域称为“超全局作用域”:全局作用域+局部作用域的总和(函数内外全都可用)

3.数据类型问题:超全局变量都是数组


$_GET变量(数组)

Get这个词,常常出现在<formaction=”abc.php” method=”get”>…</form>

这叫做“表单以get方式提交数据”

$_GET这个预定义数组变量,就是指以这种方式提交的所有数据的集合(数组)

对应来说,也可以以post方式提交数据

实际上,在网页中,以get方式提交数据有多种形式:

形式一:

     <form action=”abc.php” method=”get”>

      项目一:<inputtype=”text” name=”uName”>

      项目二:<inputtype=”password” name=”uPswd”>

    <inputtype=”submit” value=”提交”>

   </form>

形式二:<a href=”abc.php?uName=test1&uPswd=123”>文字。。。</a>

形式三:

      <script>

           Location.href=” abc.php?uName=test1&uPswd=123”;// 利用location对象的href属性

      </script>

形式四:

    <script>

          Location.assign(“abc.php?uName=test1&uPswd=123”); // 利用location对象的方法assign()

     </script>

不管是哪种形式的get提交过来的数据,获取数据是一样的。作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,也可以理解为“打开”该网页。

在abc.php网页中

<?php

      $v1=$_GET[‘uName’];   //单引号也可以用双引号,本质是一个字符串,其实是数组的键名(下标)

      $v2=$_GET[‘uPswd’];  //该键名必须跟提交的时候名字完全一致(区分大小写)

      echo ”v1=$v1,v2=$v2”;

      echo “<hr />”;

     echo “<pre>”;

     var_dump($_GET);  //var_dump()用于输出一个变量最完整的信息,输出$_GET这个数组

     echo”</pre>”

?>

注意:复选框的name命名为数组的形式(多选项)

示例:

              爱好:<inputtype=”checkbox” name=”hobby[]” value=”足球”/>足球

            <input type=”checkbox” name=”hobby[]” value=”篮球”/>篮球


$_POST变量(数组)

类似于$_GET变量(数组),$_POST代表页面通过post方式提交过来的数据所形成的数组。

post提交数据,通常只有一种形式:

         <form action=”abc.php” method=”post”>

            项目一:<inputtype=”text” name=”uName”>

            项目二:<inputtype=”password” name=”uPswd”>

          <input type=”submit”value=”提交”>

       </form>

作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,也可以理解为“打开”该网页。

接受post数据的形式为(abc.php网页中):

<?php

       $v1=$_POST[‘uName’];   //单引号也可以用双引号,本质是一个字符串,其实是数组的键名(下标)

       $v2=$_POST[‘uPswd’];  //该键名必须跟提交的时候名字完全一致(区分大小写)

       echo ”v1=$v1,v2=$v2”;

       echo “<hr />”;

       echo “<pre>”;

       var_dump($_POST); //var_dump()用于输出一个变量最完整的信息,输出$_GET这个数组

       echo”</pre>”

?>

注:网页中的form表单,一般都用post方式,get方式主要体现在其他3中形式

 

$_REQUEST变量(数组)

$_REQUEST数组,并不是一个独立的数据来源,而是$_GET数据和$_POST数据的“总和”,即$_REQUEST数组中包括了所有$_GET数据和$_POST数据——由系统自动存储的。

  • 通常$_GET数据和$_POST数据不会“同时出现”,$_REQUEST数组就代表了其中之一。

      <form action=”abc.php” method=”post”>

           项目一:<inputtype=”text” name=”uName”>

           项目二:<inputtype=”password” name=”uPswd”>

         <input type=”submit” value=”提交”>

     </form>

     <form action=”abc.php” method=”get”>

        项目一:<input type=”text”name=”uName”>

         项目二:<inputtype=”password” name=”uPswd”>

       <input type=”submit” value=”提交”>

    </form>

    两者接受数据都一样

<?php

      $v1=$_REQUEST[‘uName’];   //单引号也可以用双引号,本质是一个字符串,其实是数组的键名(下标)

     $v2=$_REQUEST[‘uPswd’];  //该键名必须跟提交的时候名字完全一致(区分大小写)

     echo ”v1=$v1,v2=$v2”;

?>

  • 当,get与post同时提交的情形(一般只有一种html语法形式会出现该情形):如下

  <form action=”abc.php?a=5&b=10”method=”post”>

项目一:<inputtype=”text” name=”uName”>

项目二:<inputtype=”password” name=”uPswd”>

<input type=”submit” value=”提交”>

</form>

  此时,uName和uPswd两个数据以post方式提交给abc.php,并a=5与b=10以get方式提交给abc.php

则在页面中:

这样取得get数据:

$v1=$_GET[‘a‘];  

$v2=$_GET[‘b’];

这样取得post数据:

$v1=$_POST[‘uName’]; 

$v2=$_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”,顺序反过来

例如:

<form action=”abc.php?a=5&b=10”method=”post”>

项目一:<inputtype=”text” name=”uName”>

项目二:<inputtype=”password” name=”uPswd”>

项目三:<input type=”text”name=”a”>

<input type=”submit” value=”提交”>

</form>

a的数据为以post方式提交的数据。

$_GET 、$_POST 、$_REQUEST三种数据是相互独立的


$_SERVER变量(数据)

该变量存储了服务器端或客户端的一些请求信息或设置信息,比较多,而且不同的服务器和不同的请求页面,其数据项都可能不同。

常用的有:

REMOTE_ADDR,用户的IP地址

SERVER_ADDR,服务器端的IP地址

  SERVER_NAME,服务器名(主机名)

输出所有项(可能每台服务器有所差异)

echo ”<table border=’1’>”;

foreach($_SERVER as $key=>$value){

  echo “<tr>”;

  echo “<td>$key</td>”;

echo “<td>$value</td>”;

echo “</tr>”;

}

echo “</table>”;


$GLOBALS变量(数据)

似乎是一个多余的变量:它只是把我们定义的所有全局变量存储到该数组中:

变量名就是该数组的下标(键名),变量值就是对应的值。

<?php

$v1=1;

$v2=2;

function f1(){

$v3=3;

$v4=4;

echo ”<br/>函数f1被调用!”;

}

     f1();

         echo ”<pre>GLOBALS数组内容为:<br />”;

           var_dump($GLOBALS);

         echo “</pre>”;

?>

(全局变量v1,v2存入GLOBALS数组,而局部变量v3、v4没有存入GLOBALS数组)

显示: 

函数f1被调用!

GLOBALS数组内容为:

array(7) {

  ["GLOBALS"]=>

  *RECURSION*

  ["_POST"]=>

  array(0) {

  }

  ["_GET"]=>

  array(0) {

  }

  ["_COOKIE"]=>

  array(0) {

  }

  ["_FILES"]=>

  array(0) {

  }

  ["v1"]=>

  int(1)

  ["v2"]=>

  int(2)

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值