美文网首页
基础语法复习——PHP

基础语法复习——PHP

作者: 哈尼橘橘 | 来源:发表于2019-03-25 20:33 被阅读0次

    What's PHP ?

    Hypertext Preprocessor(超文本预处理器),是一种脚本语言,PHP脚本在服务器上运行,结果以纯HTML形式返回给浏览器。
    PHP可以对服务器上的文件进行操作,也可以对数据库中的数据进行操作。

    关于运行的服务器,可以考虑一下phpStudy呀~配置简单易上手

    PHP基础语法

    <?php   //这是开头
    //这是单行注释
    
    header("Content-Type: text/html;charset=utf-8");
    
    /* 这是
    多行注释*/
    
    echo "这是用echo直接输出,","可以输出多个字符串,","比print看起来优秀一点","<br>";
    print "这是用print直接输出,只能输出一个字符串";
    
    //这是结尾 ?> 
    

    变量及数据类型

    • 变量名前需带$符号;
    • 变量名必须用字母或者下划线开头;
    • 变量名区分大小写、不能包含空格;
    • 没有声明的变量,当第一次被赋值时,被创建。

    变量作用域

    example:
    <?php
    header("Content-Type: text/html;charset=utf-8");
    
    $x = 9; //这是一个全局变量
    echo "全局变量x的值为:$x";
    echo "<br>";
    echo "<br>";
    
    function demo(){
        $y = 12;  //这是一个局部变量
        echo "局部变量y的值为:$y";
        echo "<br>";
    
        global $x;  //使用global,在函数内引用全局变量
        $z = $x + $y;
        echo "全局变量x和局部变量y的和为:$z";
        echo "<br>";
    
        $m = $GLOBALS['x'] + 2 * $y;  //也可以用$GLOBALS[]数组的形式,引用全局变量
        echo "第二种引用全局变量方式的结果为:$m";
        echo "<br>";
    
    }
    
    function demo2(){
        static $n = 1;  //这是一个加了static关键字的局部变量
        echo "加了static关键字的局部变量第","$n","次输出是:$n";
        $n++;
        echo "<br>";
    }
    
    demo();
    echo "<br>";
    demo();
    echo '<p style="color:red">由此可见,当一个函数完成时,它的所有变量一般都会被删除。</p>';
    
    demo2();
    demo2();
    demo2();
    echo '<p style="color:red">由此可见,加了static的局部变量,每次调用该函数时,会保留前一次被调用结束时的值。</p>';
    ?>
    
    效果如下:

    PHP将所有全局变量存储在数组$GLOBALS[index]的数组中,index保存变量的名称。

    PHP对象类似JAVA对象,看一眼就行。

    常量

    define,类似C语言中的define。语法:
    bool define(string $name,mixed $value[, bool $case_insensitive = false])
    参数:
    name,参数名,必选;
    value,参数值,必选;
    case_insensitive:大小写敏感,默认为false大小写敏感,可选。

    example:
    <?php
    header("Content-Type: text/html;charset=utf-8");
    
    define("a","Fine");  //默认,大小写敏感
    define("B","Fine",false);  //设置为false,大小写敏感
    define("C","Fine",true);  //设置为true,大小写不敏感
    
    echo A,"<br>";
    echo a,"<br>";
    
    echo B,"<br>";
    echo b,"<br>";
    
    echo C,"<br>";
    echo c;
    ?>
    
    运行结果:

    运算符

    算数运算符、赋值运算符、递增/递减运算符、比较运算符、逻辑运算符、三元运算符与C语言类似。

    数组运算符
    example:
    <?php
    $x = array('a' =>"cat", 'b' =>"orange", 'm' =>"fine");
    $p = array('a' =>"cat", 'b' =>"orange", 'm' =>"fine");
    $y = array('c' =>"rabbit", 'd' =>"white", 'm' =>"fine");
    $q = array('c' =>"rabbit",'m' =>"fine", 'd' =>"white");
    
    $z = $x + $y; //合并x、y两个数组;
    
    
    //var_dump()函数用于输出表达式的类型和值
    var_dump($z);  //输出合并后的数组z,做并集
    echo "<br>","<br>";
    var_dump($x == $y);  //比较两个数组,如果所有键/值对相等,不管顺序是否相同,就返回true
    echo "<br>";
    var_dump($y ==$q);
    echo "<br>","<br>";
    var_dump($x === $p);  //比较两个数组,键/值对和顺序完全相同才返回true
    echo "<br>";
    var_dump($x === $y);
    echo "<br>","<br>";
    var_dump($x != $y);  //比较两个数组,如果不相等,则返回true
    echo "<br>";
    var_dump($x <> $y);
    echo "<br>";
    var_dump($x !== $y);
    
    ?>
    
    运行结果:

    超全局变量

    这是PHP 4.1.0之后系统中自带的变量,在一个脚本的全部作用域中都可用。

    $GLOBALS

    超级全局变量组。
    在前面变量作用域中有提到,这里做一个简单的演示。

    <?php
    $x = "Flexible";
    $y = "Cat";
    
    function globalsDemo(){
        $GLOBALS['z'] = $GLOBALS['x'].$GLOBALS['y']; //z在这里也被定义为全局变量
        echo $z; //这样是不行的,因为z是全局变量
        echo $GLOBALS['z'];
    }
    
    globalsDemo();
    echo "<br>";
    echo $z; //在函数外直接用$z是可以的
    ?>
    
    运行结果:
    $_SERVER

    包含了服务器、当前脚本等部分信息,是数组,数组中的项目由Web服务器创建。
    示例:

    <?php
    echo $_SERVER['PHP_SELF'], "<br>"; //返回当前脚本的相对地址
    echo $_SERVER['SCRIPT_FILENAME'], "<br>";  //返回当前脚本的绝对地址
    echo $_SERVER['SERVER_ADDR'], "<br>";  //返回当前脚本所在服务器的IP地址
    echo $_SERVER['SERVER_NAME'], "<br>";  //返回当前运行脚本所在服务器的主机名
    echo $_SERVER['SERVER_SOFTWARE'], "<br>";  //返回服务器表示字符串
    ?>
    
    运行结果:

    更多元素及其含义可以需要时找度娘。

    $_REQUEST

    收集HTML表单提交的数据,不论method为POST还是GET都可以。。
    示例:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>requestDemo</title>
    </head>
    <body>
        <form method="POST" action="<?php echo $_SERVER['PHP_SELF']?>">
            <!--action的值表示,在当前脚本页面显示结果-->
    
            Lover:<input type="text" name="someone">
            <input type="submit">
        </form>
    
        <?php
        @$name = htmlspecialchars($_REQUEST['someone']); 
        echo "My lover is ".$name;
        ?>
    
    </body>
    </html>
    
    运行结果:
    $_POST

    收集来自表单中method="post"的表单值,用POST方法的表单发送的值不会在浏览器的地址栏显示,并且发送的信息量也无限制。
    示例:

    example8.php:
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>postDemo</title>
    </head>
    <body>
        <form action="Hey.php" method="post">
            Who are you?<input type="text" name="fname">
            <input type="submit" value="OK">
        </form>
    </body>
    </html>
    
    Hey.php:
    <?php
        echo "Hey ".$_POST["fname"].", you are soooo pretty~";
    ?>
    
    运行结果:
    $_GET

    收集来自表单中method="get"的表单值,用GET方法的表单发送的值会在浏览器的地址栏显示,并且发送的信息不能超过2000个字符。
    示例代码仅将上一个示例中的POST改成GET。

    运行结果:
    $_FILES

    用于从客户端向远程服务器上传文件。语法:

    $_FILES["file"]["name"]  //客户端上传文件的名称
    $_FILES["file"]["type"]  //所上传的文件类型
    $_FILES["file"]["size"]  //所上传的文件大小
    $_FILES["file"]["temp_name"]  //上传的文件保存在服务器中的临时文件名,无法用putenv()方法设置
    $_FILES["file"]["error"]  //和该文件上传相关的错误代码
    
    • 在表单中需要上传文件时,用enctype属性规定提交表单时要使用的内容类型。文件内容属于二进制数据,所以需要使用multpart/form-data。
    • 允许用户上传文件是由很大的安全风险的,在编写上传脚本时最好加上文件的上传限制。

    具体可以扒CTF中的文件上传类题型源码来看,本胖这里就暂时不写了,还不是因为懒

    $_ENV

    存储了一些系统的环境变量,使用<?php print_r($_ENV); ?>查看,但是因为牵扯到实际的操作系统,所以一般情况下不可能让你查看它的完整列表。

    • 如果非要看的话,那么,打开php.ini
    • 改成EGPCS,就OK了。

    讲道理这样是没问题的,但是我也不知道为什么我的虚拟机里不行,怂的不敢在本机上瞎折腾,各位看官们了解一下就好。

    $_COOKIE

    cookie一般用来识别用户,使用setcookie()创建cookie,语法:
    setcookie(name, value, expire, path, domain)
    $_COOKIE变量就是用来获取cookie的值的。
    删除cookie时,将过期日期变成过去的时间点就行啦。

    这一块的示例,回(随)头(缘)再补吧

    $_SESSION

    session变量用来临时存储关于单一用户会话的信息,或者更改用户会话的设置。
    session工作机制:为每位用户创建一个唯一的UID,并根据这个UID来存储变量。UID存储在cookie中,或者通过URL进行传导。

    • 在php中使用session必须在<html>标签前加上<?php session_start(); ?>,这样就会向服务器注册用户的会话,为用户会话分配一个UID;
    • 存储和获取session变量的值都是使用$_SESSION变量完成,_SESSION['UID']
    • 销毁session时,可以用unset()释放指定的session变量,也可以用session_destroy()函数彻底销毁session。
    unset($_SESSION['UID']);  //释放制定的session变量
    session_destroy(); //彻底销毁所有的session
    

    包含

    俩函数,include和reqire,语法:
    include 'filename'; require 'filename';
    区别:

    • include一般放在程序的流程控制中,当程序执行遇到时才会引用;require一般放在PHP文件的最前面,在程序执行前就导入要引用的文件。
    • include引入的文件有错误时,不会中断,继续执行,返回一个警告;require引入的文件有错误时,执行终端,返回一个错误。

    今天的白小胖也很优秀(≧∇≦)/

    相关文章

      网友评论

          本文标题:基础语法复习——PHP

          本文链接:https://www.haomeiwen.com/subject/mdqivqtx.html