• PHP 基础/练习


    练习

    成绩定级

    
    
    
        
        
        成绩定级脚本
    
    
        
    输入成绩:
    =60){ echo"congratulations"; }else{ echo "sorry"; } } ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    image-20231020144537911

    image-20231020144552072

    验证可变变量

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>可变变量</title>
    </head>
    <body>
        <?php
            $panshuaipeng="person";
            $person="NB";
            echo $$panshuaipeng;
        ?>
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    image-20231020145426953

    九九乘法表

    
    
    
        
        
        99 乘法表
    
    
        ";
            for ($i = 1; $i < 10; $i++) {
                echo "";
                for ($j = 1; $j <= $i; $j++) {
                    echo "";
                    echo "{$j}"."*"."{$i}"."="."{$j}"*"{$i}";
                    echo "";
                }
                echo "";
            }
            echo"";
        ?>
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    image-20231020150101748

    PHP 基础

    概述

    • 在PHP 文件中,可以与HTML 和JavaScript 混编。

    • 开始标记 表示进入PHP 模式,结束标记?>,标识退出PHP 模式。

    • PHP 模式之外的内容会被作为字符输出到浏览器中。

    • PHP 在服务端执行,HTML 和 JS 在浏览器执行

    • HTML 或JavaScript 对于PHP 来说就是纯文本字符串

    • phpinfo

      安全问题:如果是一个在线的网站能够看到phpinfo 页面,说明存在敏感信息泄露漏洞,这个漏洞需要体现在后面的渗透测试报告中。

       phpinfo()?>
      
      • 1

      image-20231020092817786

    基础语法

    PHP 开始标记

    
    
    • 1

    PHP 结束标记

    ?>
    
    • 1

    指令分隔符

    分号;,代表一句PHP 代码的结束。

    注释

    • 单行注释

      该行 // 后的内容为注释内容

      phpinfo();  //  该函数会显示PHP 配置信息
      
      • 1
    • 多行注释

      /* 开始,*/ 结束

      /*
          这是多行注释!
          以下语句表示PHP 配置信息
      */
      phpinfo();
      
      • 1
      • 2
      • 3
      • 4
      • 5

    空白字符

    • 空白符包括:

      空白字符表达
      空格
      TAB 制表符\t
      回车换行\r\n
      换行也可以在输出的字符中输出

      这些空白字符在PHP 中都是无关紧要的,可以将一个语句展开成任意行,或者紧缩在一行,空格与空行的合理运用可以增强代码的清晰性与可读性,如果运用不合理反而会对阅读产生负担!

      但是,不能是用空白符打断 PHP 的关键字,例如函数名,语句名,变量名,类名,方法名等等。

    • 例,不打断关键字 phpinfo

      image-20231020094203779

      依旧可执行

    • 例,打断关键字 phpinfo

      image-20231020094334750

    错误级别

    • Notice、Warning 不会打断 PHP 运行
    • Error 会直接导致 PHP 程序结束运行

    变量

    变量的声明、使用、释放

    变量定义

    • 形式

      $ + 变量名;
      
      • 1
    • 严格区分大小写

      $name;
      $Name;
      $NAME
      //三个变量不是同一个变量
      
      • 1
      • 2
      • 3
      • 4
    • 字母、数字、下划线组成,不能以数字开头,不能包含其他字符(空白字符、特殊字符)

    • 驼峰式命名法、下划线式命名法

      $first_name;
      $firstName;
      $FirstName;
      
      • 1
      • 2
      • 3
    • 标识符(关键字)尽量不作为变量名

    变量的赋值、使用

    • echo 输出字符串

      
      $username="gjl";
      echo $username;
      
      //在网页输出 gjl
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    变量的释放

    • unset()函数

      unset($变量名);

      
      $username="gjl";
      unset($username);
      echo $username;
      
      //报错Notice: Undefined variable: username in E:\phpstudy\WWW\test.php on line 4
      //未定义变量
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    可变变量

    • 可变变量:

      一个变量的名字可以动态设置和使用

      也是 php 中变量覆盖漏洞的原因之一

      定义:

      $$
      
      • 1
    • 使用举例

      
      $username="gjl";
      $gjl="GuoJialiang";
      echo $$username;
      //输出 GuoJialiang
      //$($username)
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 应用

      
      $username="gjl";
      $gjl="GuoJialiang";
      $$username="liang";
      echo $gjl;
      //输出 liang
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    变量类型

    • 具有相同类型的数据才能相互操作

    输出变量类型

    • 将变量类型输出使用函数 var_dump()

      
      $name = "ZhangSan";
      var_dump($name);
      //输出 string(8) "ZhangSan"
      //长度为8的字符串“ZhangSan”
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      
      $sex = true;
      var_dump($sex);
      $age = 24;
      var_dump($age);
      $score = 59.9;
      var_dump($score);
      
      //输出 bool(true) int(24) float(59.9) 
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

    bool

    • true/false

      进行 if 判断的时,候如果表达式不是布尔类型的值,会自动进行类型转换,将其它类型的值转换成布尔值,以下值被认为是false,其他大部分的值则被认为是true

      bool(false)        // $flag = 
      int(0)             // 0
      float(0)           // 0.0
      string(0)""        // ""
      string(1)"0"       // "0"
      array(0){}         // array()
      NULL               // NULL
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    int

    • 整型,存储整数

      $age = 24;
      var_dump($age);
      // int(21)
      
      • 1
      • 2
      • 3

    float

    • 浮点型,包含小数的数

      $score = 59.9;
      var_dump($score);
      // float(59.9)
      
      • 1
      • 2
      • 3

    string

    • 字符串,可以使用单引号、双引号、定界符三种方法进行定义
    单引号
    • 单引号定义的字符串不能再包含单引号,如果必须使用单引号则需要用反斜杠 \ 进行转义 \'

      
      $welcome = 'welcome \'ZhangSan\'';
      echo $welcome;
      //输出 welcome 'ZhangSan'
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • php 不会解析单引号中的变量

      
      $name = 'zhangSan';
      $msg = 'welcome $name';
      echo $msg;
      //输出 welcome $name
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    双引号
    • 可以包含单引号,无须转义,但包含双引号时需要转义

      php 会解析双引号间的变量

      
      $name = "zhangSan";
      $msg = "welcome $name";
      echo $msg;
      //输出 welcome zhangSan
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 双引号中要解析的变量通常要用 {} 括起来

      
      $name = "zhangSan";
      $msg = "welcome {$name}";
      echo $msg;
      //输出 welcome zhangSan
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    定界符
    • 使用情景

      当需要定义大段字符串时,并且该字符串出现大量特殊字符(包括反引号、双引号等)

    • 定界符定义字符串中的单双引号、大部分特殊字符不需要转义

    • <<< 标志 表示定界符开始,同样的标志;为结束标识符,定界符结束要顶格,分号之后的此行不可有任何字符(包括空字符)

    • 定界符中的标志建议使用纯大写字母

    • 定界符中的 $ 同样会被识别为变量,变量名要用 {} 括起来

      
      
      $name = "gjl";
      $msg = <<<GJL
      

      My Name is {$name}!

      GJL;
      //若结束符后输入任何字符(包括空字符)则会报错Parse error: syntax error, unexpected $end echo $msg; ?>
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

      输出效果

      image-20231020095700962

    字符串拼接
    • 在php中 . 表示拼接

      $a.$b

      
      $name = "zhangSan";
      $message = "welcome,";
      echo $message.$name;
      //输出 welcome,zhangSan
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    常量

    在php脚本执行期间,常量一旦本定义,就不能被改变或取消定义,常量的作用域是全局,有 bool , int , float , string 类型

    自定义常量

    • 按照惯例常量标识符使用大写定义

    • 使用函数 define() 定义

      
      define("USERNAME","GJL");
      //给常量 USERNAME赋值 GJL
      echo USERNAME;
      //输出结果 GJL
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      尝试对其赋值报错

      
      define("USERNAME","GJL");
      USER
      echo USERNAME;
      ?>
          
      // Parse error: syntax error, unexpected T_ECHO in E:\phpstudy\WWW\php\test.php on line 13
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    预定义常量

    总览

    • PHP已经定义好的,可以直接使用的常量,一般代表特殊含义。

      魔术常量是预定义常量中特殊的一类

      常量名常量值
      __FILE__当前文件名,完整路径
      __LINE__当前行号
      __FUNCTION__当前函数名
      __CLASS__当前的类名
      __NETHOD__当前对象的方法名
      PHP_OSUNIX | WINNT | Darwin
      PHP_VERSION当前 PHP 的版本
      DIRECTORY_SEPARATOR\/,根据操作系统决定目录的分隔符

    使用

    __FILE__

    当前文件名,完整路径

    
    echo __FILE__;
    //输出效果 E:\phpstudy\WWW\test.php
    ?>
    
    • 1
    • 2
    • 3
    • 4
    __LINE__

    当前行号

    
    echo __LINE__;
    //输出效果 2
    ?>
    
    • 1
    • 2
    • 3
    • 4
    PHP_OS

    操作系统

    
    echo PHP_OS;
    //输出效果 WINNT
    ?>
    
    • 1
    • 2
    • 3
    • 4
    PHP_VERSION

    当前 PHP 的版本

    
    echo PHP_VERSION;
    //输出效果 5.3.29
    ?>
    
    • 1
    • 2
    • 3
    • 4
    DIRECTORY_SEPARATOR

    当前目录的分隔符

    
    echo DIRECTORY_SEPARATOR;
    //输出效果 \
    ?>
    
    • 1
    • 2
    • 3
    • 4

    常见的运算符

    算数运算符

    • 除加 +-*/ 取余 %

      $a$b 的运算

      运算符计算结果
      -$a取反$a 的负值
      ++$a前加$a 的值+1,然后返回 $a
      $a++后加返回 $a,然后将 $a 的值+1
      --$a前减$a 的值-1,然后返回 $a
      $a--后减返回 $a,然后将 $a 的值-1

    字符串运算符

    • 字符串运算符用来拼接字符串

      • JS 语言中,字符串拼接用 + ,预算符 . 的作用是访问对象中的属性或方法

      • PHP 中使用 . 进行字符串拼接。PHP 中 . 也叫连接运算符

        
        $name = "Jucy";
        $str = "hello,";
        echo $str.$name;
        //输出效果 hello,Jucy
        ?>
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6

    赋值运算符

    • 包括 = , += , -= , *= , /= , %= , .=

    • 解释 :$a ?= $b$a = $a ? $b

    • .=

      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 示例

      
      $a = 5;
      $b = 3;
      $a *= $b;
      echo $a;
      // 输出结果 15
      //解释 第四行代码即 $a = $a * $b
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    比较运算符

    • 运算结果为布尔类型

      truefalse

    运算符说明备注
    ==等于执行==运算时要求运算符两边的数据类型一致
    自动强制类型转换
    ===全等全等判断时若两边数据类型不同则直接返回false
    !=不等
    <>不等
    !==不全等
    <小于
    >大于
    <=小于等于
    >=大于等于
    
    $a = 3;
    $b = 3;
    $c = '3';
    $j1 = $a == $b;
    echo var_dump($j1);
    //输出 bool(true)
    $j2 = $a === $b;
    echo var_dump($j2);
    //输出 bool(true)
    $j3 = $a == $c;
    echo var_dump($j3);
    //输出 bool(true)
    $j4 = $a === $c;
    echo var_dump($j4);
    //输出 bool(false)
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    逻辑运算符

    逻辑运算符例子解释运算符规则
    and
    &&
    $a and $b
    $a && $b
    逻辑"与"
    or
    `
    `$a or $b
    `$a
    xor$a xor $b逻辑"异或"相同为假,不同为真
    !!$a逻辑"非"

    其他运算符

    运算符名称举例解释
    ?:三目运算$a > $b ? $a : $b如果 $a > $b 是真值则返回 $a(前)
    如果 $a > $b 是假值则返回 $b(后)
    ``反引号(esc键下方)自动调用系统命令
    @错误屏蔽屏蔽表达式可能发生的错误
    • ?:

      判断条件 ? true : false
      
      • 1
      
      $a = 10;
      $b = 20;
      $max = $a > $b ? $a : $b;
      echo $max;
      //输出结果 20
      //$a > $b是假值,返回$b
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • ``

      
      $str = "chcp65001&&ipconfig";
      echo `$str`;
      ?>
      
      • 1
      • 2
      • 3
      • 4

      输出

      image-20231020114144854

      格式化输出

      
      $str = "ipconfig";
      echo '
      '.`$str`;
      ?>
      
      • 1
      • 2
      • 3
      • 4

      输出效果

      image-20231020114153553

    • @

      
      echo $username;
      //报错 Notice: Undefined variable: username in E:\phpstudy\WWW\test.php on line 2
      echo @$username;
      //不会报错
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    流程控制

    顺序执行

    • 自上而下顺序执行

      默认

      
      echo "1";
      echo "
      "
      ; echo "2"; echo "
      "
      ; echo "3"; echo "
      "
      ; ?>
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    分支执行

    • 根据表达式的值是否为 True 选择性执行代码

    • 主要通过 if 和 switch 实现

    • 进行 if 判断的时,候如果表达式不是布尔类型的值,会自动进行类型转换,将其它类型的值转换成布尔值,以下值被认为是false,其他大部分的值则被认为是true

      bool(false)
      int(0)
      float(0)
      string(0)""
      string(1)"0"
      array(0){}
      NULL
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    if 语句

    • 语法

      if(//判断条件){
          //语句块1
      }elseif(//判断条件2){
          //语句块2
      }else{
          //语句块3
      }
      //判断条件为True则执行语句块1,否则执行语句块2
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      
      $score = 99;
      if(60 <= $score && $score < 90){
      	echo "ok";	
      }elseif($score >=90){
      	echo "nb";
      }else{
          echo "lj";
      }
      //输出 nb
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

    switch 语句

    • 当需要多项分支结构,并且判断条件是具体某个值,此时大多使用 switch 结构

      switch(判断条件){
          case1:
              语句块;
              break;
          case2:
              语句块;
              break;
          default:    //默认,相当于if中的else
              语句块;
              break;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      
      $day = 1;
      switch($day){
          case 1:
              echo "Monday";
              break;
          case 2:
              echo "Tuesday";
              break;
          case 8:
          case 9:
              echo "gun";
              break;
      }
      //输出 Monday
          ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    • 注意

      • 每个 case 语句都需要加一个 break;
      • case表达式的值最好是整型或字符串
      • 如果某个 case 后没有接语句块,该判断条件要执行的语句块与下一判断条件所要执行的语句块相同
      • case 后的语句块不需要用 {} 括起来

    循环执行

    while 循环

    • 语法

      while(表达式){
          //循环体
      }
      
      • 1
      • 2
      • 3

      当表达式为 True 时执行循环体,当循环体执行完一遍时,返回到 while 后的表达式继续判断表达式的值是否为 True ,如果还是 True 则继续循环,直到这个表达式的值为 False ,则该 while 循环结束

    • 举例

      输出 1 到 100 数字

      
      $i = 1;
      while($i <= 100){
          echo $i."
      "
      ; $i++; } ?>
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    do while 循环

    • 语法

      
          do{
              //循环体
          }while(条件)
      ?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 举例

      输出 1 到 100 数字

      
          $i = 1;
          do{
              echo $i."
      "
      ; $i ++; }while($i <= 100) ?>
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    for 循环

    • 语法

      for(计数器;判断条件;自增或自减){
          //循环体
      }
      
      • 1
      • 2
      • 3
    • 举例

      输出 1 到 100 数字

      
          for($i=1;$i<=100;$i++){
              echo $i."
      "
      ; } ?>
      • 1
      • 2
      • 3
      • 4
      • 5

    特殊的流程控制语句

    break 语句

    • 用于 switch,while,do...while,foreach 等的终端。后面可以接上一些数字表示跳出几层循环。默认不加就是跳出当前循环。

    continue

    • 只能用于循环语句,轮空本次循环

    exit 函数

    • 结束当前 PHP 脚本执行,同 die() 语句

      exit 中可以输入语句进行输出

      exit("php is over")
      
      • 1
  • 相关阅读:
    动态链接函数(dlopen/dlsym/dlclose)使用总结
    Qt 客户端和服务器通信【一对一版本】
    测试工具fio
    SpringCloud Alibaba系列 Sentinel(三)
    四足步行机器人的结构设计及仿真
    JavaScript浏览器(兼容、调试)
    计算机毕业设计Java网上鲜花店网站(源码+系统+mysql数据库+Lw文档)
    Flink整合面向用户的数据流SDKs/API(Flink关于弃用Dataset API的论述)
    Redis缓存同步1-策略介绍
    【uniapp】仿微信支付界面
  • 原文地址:https://blog.csdn.net/weixin_51559599/article/details/133946813