给李书记点个赞吧
php预定义变量

php预定义变量

作者:李书记php 时间:2016-11-23 分类:学习php 评论:4 条 浏览:2192

在昨天我们讲到了Php变量详解,那么今天我们开始讲php的预定义变量,那么今天大家学习的就比较多了,我会加入比较通俗易懂的也是比较经典的案例方便phper新手的理解和掌握基本上看文档就可以学会php,相信很多人看视频太浪费时间了吧。

所谓预定义变量,其实指,php这个语言工具中,预先就定义好的变量;我们只是“拿来使用”。

综述

主要有:$_GET, $_POST, $_REQUEST, $_SERVER, $GLOBALS,并且均是数组。
1:系统定义与维护——即我们不应该其给其赋值或销毁其值,只应该去“用其值”。
2:具有超全局作用域——哪里都可以使用。
3:不同情形下可能具有不同的值

$_POST变量

含义:它代表用户通过表单以post方式( method=”post” )提交的时候所提交的所有数据——这个称为post数据。

基本演示:post.html   文件

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
</head>
<body>
    <form action="request.php" method="post">
    数据1:<input type="text" name="data1">
    数据2:<input type="text" name="data2"><br/>
    <input type="submit" value="提交">
    </form>
</body>
</html>

基本演示:post.php   文件[接收数据]

<?php
 $data1 = $_POST['data1'];
 $data2 = $_POST['data2'];
 echo "data1 = $data1,data2 = $data2";
 echo "<hr/>";
 print_r($_POST);
 ?>
 输出结果:
data1 = 李海洋,data2 = 李海洋

Array ( [data1] => 李海洋 [data2] => 李海洋 ) 

empty(变量)和empty(变量)的区别:
isset(变量):判断变量是否存在,或变量是否为空(null);如果存在,就是true,否则就是false
empty(变量): 判断变量的“内容”是否为空的(不是null的空,而是没有内容),基本上,是一些硬性规定,如下数据都是“空的”: 0, “”, “0”, false, null, array()空数组也是空
如果一个变量内容是空的,empty()返回的结果是true,否则是false

$_GET变量

含义:它代表用户通过get方式( 有5种get形式 )提交的时候所提交的所有数据——这个称为get数据。

小提示:get,post没有翻译!

提交get数据有5种形式:

形式1:

<form  action="目标文件.php" method="get">
    <input type="text"  name="data1" />
    <input type="text"  name="data2" />
    <input type="submit" value="提交" />
</form>

这种形式的get数据,跟post数据类似,数据内容由用户填写或选择而得到!

形式2:

<a   href=”目标文件.php?data1=5&data2=cctv&age=18”>链接文字</a>

说明:

1,它只是一个链接而已,只是在链接文件名的后面加上“?”,然后一个一个“串接数据”;

2,数据形式为:数据项名称=数据值, 相互之间用“&”符号隔开

3,这种形式的数据也同样是“点击链接”就提交的get数据,但用户只能选择点还是不点,而不能修改数据。

形式3:

<script>
    location.href = “目标文件.php?data1=5&data2=cctv&age=18”;
</script>

说明:

1,该语句可以看做是通过js技术a标实现的页面跳转功能,跟签的连接功能完全一样!

2,其中该语句,通常都是放在一个函数中,然后因为某个事件发生而去调用该函数!

形式4:

<script>
    location.assign( “目标文件.php?data1=5&data2=cctv&age=18”);
</script>

说明:

该语句其实跟形式3完全一样功能,只是location这个对象实现页面跳转的另一个语法形式而已!

形式5:php的跳转语法

<?php
    //语法形式: header(“location: 目标网页地址”);
    header(“location: 目标文件.php?data1=5&data2=cctv&age=18”);
?>

小结:

上述多种get形式提交数据,都要理解为:

跳转到某个页面,并“同时”携带(提交)一定的get数据过去!

不管哪种形式的get数据提交,接收get数据,都只有一种形式,跟post类似:

$v1 = $_GET[‘数据项名称’]; //取得一个get数据项的值;比如$_GET[‘data1’], $_GET[“age”];

也可以“输出”所有get数据:

print_r($_GET); 或 var_dump($_GET);

$_REQUEST变量

含义:一句话,它是$_GET变量和$_POST变量数据的“合集”:即,它里面同时存储了这两种数据。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
</head>
<body>
    <form action="request.php" method="post">
    数据1:<input type="text" name="data1">
    数据2:<input type="text" name="data2"><br/>
    <input type="submit" value="提交">
    </form>
</body>
</html>
php代码:
<?php 
    header("content-type:text/html;charset=utf-8");
    if(!empty($_POST)){
        echo "<p>post数据:<br/>";
        print_r($_POST);
    }
    if(!empty($_GET)){
        echo "<p>get数据:<br/>";
        print_r($_GET);

    }
    if(!empty($_REQUEST)){
        echo "<p>REQUEST数据:<br/>";
        print_r($_REQUEST);
    }
 ?>
结果为:
data1 = 李海洋,data2 = 李海洋

Array ( [data1] => 李海洋 [data2] => 李海洋 )

如果表单为get提交方式:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
</head>
<body>
    <form action="request.php" method="get">
    数据1:<input type="text" name="data1">
    数据2:<input type="text" name="data2"><br/>
    <input type="submit" value="提交">
    </form>
</body>
</html>
php代码为:
<?php 
    header("content-type:text/html;charset=utf-8");
    if(!empty($_POST)){
        echo "<p>post数据:<br/>";
        print_r($_POST);
    }
    if(!empty($_GET)){
        echo "<p>get数据:<br/>";
        print_r($_GET);

    }
    if(!empty($_REQUEST)){
        echo "<p>REQUEST数据:<br/>";
        print_r($_REQUEST);
    }
 ?>

结果为:

get数据:
Array ( [data1] => 李海洋 [data2] => 李海洋 )
REQUEST数据:
Array ( [data1] => 李海洋 [data2] => 李海洋 )

怎么能同时具有get和post数据呢?

只有一个方式:<!–以下action中的?号后面的数据都会以get方式提交–>

<form   action=”目标文件.php?data1=5&data2=cctv&age=18”   method=”post”>
    <!--以下表单项的数据都会以post方式提交-->
    <input type=”text”  name=”n1” />
    <input type=”text”  name=”n1” />
    <input  type=”submit”  value=”提交” />
</form>
案例:html代码
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
</head>
<body>
    <form action="request.php?d1=5&d2=cctv&age=18" method="post">
    数据1:<input type="text" name="data1">
    数据2:<input type="text" name="data2"><br/>
    <input type="submit" value="提交">
    </form>
</body>
</html>
案例:php代码
<?php 
    header("content-type:text/html;charset=utf-8");
    if(!empty($_POST)){
        echo "<p>post数据:<br/>";
        print_r($_POST);
    }
    if(!empty($_GET)){
        echo "<p>get数据:<br/>";
        print_r($_GET);

    }
    if(!empty($_REQUEST)){
        echo "<p>REQUEST数据:<br/>";
        print_r($_REQUEST);
    }
 ?>
实现结果:
post数据:
Array ( [data1] => 李海洋 [data2] => 李海洋 )
get数据:
Array ( [d1] => 5 [d2] => cctv [age] => 18 )
REQUEST数据:
Array ( [d1] => 5 [d2] => cctv [age] => 18 [data1] => 李海洋 [data2] => 李海洋 )

request数据取值时,跟get数据和post也完全一样!

$_REQUEST[‘数据项名称’];

<?php 
    header("content-type:text/html;charset=utf-8");
    echo "<br/>".$_REQUEST['d1'];
    echo "<br/>".$_REQUEST['d2'];
    echo "<br/>".$_REQUEST['age'];
    echo "<br/>".$_REQUEST['data1'];
    echo "<br/>".$_REQUEST['data2'];
 ?>

当post数据和get数据的数据项名称相同时(其实我们反对这么做),默认是post数据覆盖了get数据。

不过这个状况同样可以在php.ini中设置:

默认时:request_order = "GP";
修改为:request_order = "PG";

$_SERVER变量含义:

它代表在一次浏览网页的过程中的浏览器端的一些信息或服务器端的一些信息。我们只是在程序中可以拿到这些信息,并用于编程所需!比如:取得用户的访问IP地址。

注意:

这种信息,随着不同的页面,和不同的服务器,以及不同的时刻,都可能不同!

要求:

大约有30个左右的信息,我们只要知道其中5个左右!主要有:

$_SERVER[‘REMOTE_ADDR’]:获取访问者的ip地址

$_SERVER[‘SERVER_ADDR’]:获取服务器所在的ip地址

$_SERVER[‘SERVER_NAME’]:获取服务器的名字,其实就是站点设置中的servername

$_SERVER[‘DOCUMENT_ROOT’]:获取站点的真实物理地址,其实就是站点设置中的documentroot

$_SERVER[‘PHP_SELF’]:获取当前网页地址(不含域名部分)

$_SERVER[‘SCRIPT_FILENAME’]:获取当前网页地址物理路径

$_SERVER[‘QUERY_STRING’]获取当前网页地址中的所有get数据(就是?号后面部分),但只是一个整体的字符串而已。

<?php 
    echo "<pre>";
    print_r($_SERVER);
    echo "</pre>";
    echo "<table border='1'>";
    foreach ($_SERVER as $key => $value) {
        echo "<tr>";
        echo "<td>$key</td>";
        echo "<td>$value</td>";
        echo "</tr>";
    }
    echo "</table>";
 ?>

$GLOBALS变量

含义:它也是一个“重复性数据”,它里面存储了我们自己定义的所有“全局变量”。

举例:

$v1 = 1; //定义了一个全局变量,

此时,就有了这样一个数据:$GLOBALS[‘v1’],其值就是1

echo $v1 ; //输出1

echo $GLOBALS[‘v1’]; //输出1

这个变量,主要是用于在局部范围不可以使用全局变量的时候,又需要该全局变量的值,此时就可以用它来取得该全局变量的值。

<?php 
    $v1 = 1;
    echo "<pre>";
    print_r($GLOBALS);
    echo "</pre>";
 ?>
  
  1. 朱曙明博客 2016-11-24 11:31 #1 回复TA

    感谢分享。受教了。

  2. 朕说 2016-11-24 09:44 #2 回复TA

    打酱油

  3. 朕说 2016-11-24 09:43 #3 回复TA

    php

  4. 总管 2016-11-23 21:02 #4 回复TA

    精彩!你对PHP的研究非常深入,学习了!

发表评论

电子邮件地址不会被公开。 必填项已用*标注