05-变量

2019-10-16  本文已影响0人  董泽平

变量

前面我们只是简单的描述了变量的定义和赋值,这节我们详细讲解php变量

变量的值传递

php的变量和其它编程语言一样,变量之间的赋值只是值拷贝。

$num3 = 10;
$num4 = $num3;
echo $num3." ".$num4."\n";//10 10
$num4 = 20;
echo $num3." ".$num4."\n";//10 20

变量的引用传递

格式:

注意点


    $num5 = 10;
    $num6 = &$num5;
    echo $num5." ".$num6."\n";//10 10
    $num6 = 20;
    echo $num5." ".$num6."\n";//20 20

可变变量

格式:

注意点:


    $num7 = "abc";
    $$num7 = 20;
    echo $num7." ".$$num7."\n";//abc 20
    echo $num7." ".$abc."\n";//abc 20
    

变量作用域

注意点:


    $num = 10;//全局变量
    static $snum = 20;//静态变量
    function f1()
    {
        $num = 100;//局部变量,作用范围是当前函数里面
        echo $num;//100
        echo $GLOBALS["num"];//10---$GLOBALS存储所用全局变量
        $snum++;
    }
    echo $num;//10---全局作用域访问全局变量
    f1();

预定义变量

下面我们将6个比较重要的预定义变量,它们6个都是保存基本信息的数组。

1.$GLOBALS

上面已经说过,$_GLOBAL变量保存了当前php文件所有全局变量,它是一个数组,所以我们可以按照数组键值对的格式访问我们需要查看的数组格式如下:

//定义全局变量
$num = 10;
//格式化输出全局变量数组
print_r($GLOBALS)
//访问你想查看的全局变量   
echo $GLOBALS["全局变量名"];

下图是全部$GLOBALS输出的情况,其中空色标记的是当前页面的全局变量

3.jpg

2.$_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组,我们直接输出它,如下图。

4.jpg

3.$_GET

$_GET通过 URL 参数传递给当前脚本的变量的数组,当然我们可以通过html表单的get提交方式拿到表单的数据。

php里面嵌入html

前面我们只是提了下php文件可以嵌套html代码,此处我将详细讲解php文件代码里嵌入html的方法。

方式1

echo 输出字符串的格式,如下所示

echo "<div>我是div</div>";

方式2

heredoc 输出字符串格式,如下所示(heredoc格式不需要转义,且适合嵌入大段html代码)

echo <<<"doc"
<div>我是div</div>
doc;

方式3

第三种格式就是完整的html代码嵌入php文件里。

<?php
echo "此处写php代码"
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>我是div</div>
</body>
</html>
Get方式提交数据

有了上面的认识,我们可以继续讲解$_GET了,上面说过get提交的方式有两种,我们一一演示下。

1 url地址提交数据

我们通过url参数设置的数据都会保存在$_GET数组里面。只需要输出$_GET数组或者按照对应key输出对用的value值。

5.jpg

    print_r($_GET);
    //输出:Array ( [name] => dzp [age] => 21 )

2 html表单的get提交


    <?php
    echo <<<"get"
    <form action="" method="get">
        <label>zhanghu1</label>
        <input type="text" name="zh">
        <label>mima1</label>
        <input type="password" name="pw">
        <input type="submit" value="pass">
    </form>
    get;
    
    print_r($_GET);//输出get数组
    if(isset($_GET["zh"]))//检测$_GET["zh"]是否有数据
    {
        echo $_GET["zh"];
    }
    if(isset($_GET["pw"]))////检测$_GET["pw"]是否有数据
    {
        echo $_GET["pw"];
    }

打开php文件,显示如下

6.jpg

此时我在zhanghu1输入了dzp,在mima1输入了123456,显示如下。

7.jpg

4.$_POST

post方式提交数据

我们通过表单的post提交来演示post提交数据,post提交数据比get方式安全,因为它的数据不会出现在浏览器的url头里面。


    <?php
    echo <<<"post"
    <form action="" method="post">
        <label>zhanghu</label>
        <input type="text" name="zh">
        <label>mima</label>
        <input type="password" name="pw">
        <input type="submit" value="pass">
    </form>
    post;
    
    print_r($_POST);//输出post数组
    if(isset($_POST["zh"]))
    {
        echo $_POST["zh"];
    }
    if(isset($_POST["pw"]))
    {
        echo $_POST["pw"];
    }

我们打开php文件,浏览器页面的zhanhu输入了123456,mima栏也输入了123456,如下所示

8.jpg

最后点击pass,页面显示数据如下

9.jpg

好了,get与post方式提交的演示就结束了,可能初次看起来有点懵,建议先理解整个过程,然后你得懂前端的一部分吧。

5.$_COOKIE

测试设置浏览器cookie的代码,下图是对应浏览器cookie被保存的页面


    setcookie("name",'dzp');//设置客户端的cookie
    echo $_COOKIE["name"];//输出cookie保存的name,结果是dzp

10.jpg

我们利用cookie可以保存网页的关键信息,例如用户的登陆信息,下面演示一个案例,用php1文件模拟登陆页面,当用户输入正确的信息后,页面跳转到主界面(欢迎界面新的php2文件)我们可以用$_COOKIE将之前php1文件的cookie数据读取出来显示到新界面,当信息输入错误,提示错误,不会跳转到新界面.

步骤一:在php1文件写好post方式提交数据的表单,并且设置读取表单数据,当信息登陆成功后,将用户的名字保存在$_COOKIE数组里面,并跳转,否则提示失败.假设正确的账户是admin正确的密码是123456

php1文件


    /*模拟用户简单登陆,添加cookie*/
    echo <<<"denglu"
    <form action="" method="post">
        <label>name</label>
        <input type="text" name="zh">
        <label>password</label>
        <input type="password" name="mm">
        <input type="submit" value="push">
    </form>
    denglu;
    //拿到用户提交的数据,根据用户名注册cookie
    if(isset($_POST["zh"]) && isset($_POST["mm"]))
    {
        if($_POST["zh"]==="admin" && $_POST["mm"]==="123456")
        {
            //种下cookie,返回到主页面
            setcookie('useName',$_POST["zh"],time()+3600*24);
            header('Location:index.php');
            echo '<script>alert("denglu is ok!")</script>';
        }else{
            echo '<script>alert("denglu is error")</script>';
        }
    }

php2文件


    <?php
    //拿到客户端保存用户姓名的cookie,提示欢迎这个用户,如果cookie保存失败,则跳转到登陆界面
    if(!isset($_COOKIE["useName"]))
    {
        header("Location:03-COOKIE-SESSION.php");
    }else{
        echo "Welcome  ".$_COOKIE["useName"];
    }

首先我先输入错误的登陆信息,提示denglu is error

11.jpg 12.jpg

接着我么来输入正确的登陆信息,此时来到了新的页面,欢迎用户admin

13.jpg 14.jpg

6.$_SESSION

session的用法


    session_start();//开启一个会话
    echo session_id();//输出session
    $_SESSION["name"] = "dzp";//在session数组保存信息

上一篇 下一篇

猜你喜欢

热点阅读