php基础

学习代码审计做铺垫

加油奥利给

学习书名《php7底层设计与源码实现》
学习网站
https://www.w3school.com.cn/html/index.asp

1
<?php  代码部分 ?>

1. phpinfo();函数查看php版本还能看到其它很多关于PHP的信息,叫做探针

  1. 代码
    1
    2
    3
    <?php
    phpinfo();
    ?>
    结果
    在这里插入图片描述

2. 变量

  1. 代码

    1
    2
    3
    4
    5
    6
    <?php
    $a=1;
    $b=5;
    $c=$a+$b;
    echo $c;
    ?>

    结果
    在这里插入图片描述

    上面的介绍

    变量前面要加上$
    echo 和 print 之间的差异:

    • echo - 能够输出一个以上的字符串
    • print - 只能输出一个字符串,并始终返回 1

3. 字符串

  1. 代码
    1
    2
    3
    4
    5
    6
    7
    <?php 
    $x = "Hello world!";
    echo $x;
    echo "<br>";
    $x = 'Hello world!';
    echo $x;
    ?>
    结果
    在这里插入图片描述

    上面的介绍

    那个<br>是换行的意思

4. 整数

  1. 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php 
    $x = 5985;
    var_dump($x);
    echo "<br>";

    $x = -345; // 负数
    var_dump($x);
    echo "<br>";

    $x = 0x8C; // 十六进制数
    var_dump($x);
    echo "<br>";

    $x = 047; // 八进制数
    var_dump($x);
    ?>

    结果
    在这里插入图片描述

    上面的介绍

    var_dump() 会返回变量的数据类型和值

    可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
    含有十六进制字符的字符串不再被视为数字,而是当作普通的字符串

5.浮点型

  1. 代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
    $x = 10.365;
    var_dump($x);
    echo "<br>";

    $x = 2.4e3;
    var_dump($x);
    echo "<br>";

    $x = 8E-5;
    var_dump($x);
    ?>
    结果
    在这里插入图片描述

    上面的介绍

    var_dump() 会返回变量的数据类型和值

6. 布尔型

是 true
或 false

7. 数组

php的数组用

  1. 代码array来定义
    1
    2
    3
    4
    <?php 
    $cars=array("Volvo","BMW","SAAB");
    var_dump($cars);
    ?>
    结果
    在这里插入图片描述
    var_dump() 会返回变量的数据类型和值

8.NULL 值

  1. 代码
    1
    2
    3
    4
    5
    <?php
    $x="Hello world!";
    $x=null;
    var_dump($x);
    ?>
    NULL就是空的意思
    在这里插入图片描述

9. 运算符

在这里插入图片描述

  1. 代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    $x=17;
    $y=8;
    echo ($x + $y); // 输出 25
    echo ($x - $y); // 输出 9
    echo ($x * $y); // 输出 136
    echo ($x / $y); // 输出 2.125
    echo ($x % $y); // 输出 1
    ?>

10 递增递减运算符

在这里插入图片描述

  1. 代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    $X=2;
    echo ++$X;

    echo "<br/>";
    $A=1;

    echo $A++;
    ?>
    结果
    在这里插入图片描述

11 比较运算符

在这里插入图片描述

12 逻辑运算符

在这里插入图片描述

13字符串连接运算符

PHP中使用英文字符“.”将两个或多个字符串连接起来

  1. 代码

    1
    2
    3
    4
    5
    6
    <?php 
    $X="abc";
    $A="def";
    $V=$X.$A;
    echo $V;
    ?>

    结果
    在这里插入图片描述

14 赋值运算符

在这里插入图片描述

15 位运算符

在这里插入图片描述

位运算符是指对二进制位从低位到高位对齐后进行运算
就是按与,或,异或,取反,左移,右移

  1. 代码
1
2
3
4
5
6
7
8
9
<?php 
$a=1;
echo ($a & 2)."<br/>";
echo ($a | 2)."<br/>";
echo ($a ^ 2)."<br/>";
echo (~ 2)."<br/>";
echo ($a << 2)."<br/>";
echo ($a >> 2)."<br/>";
?>
结果 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200424123420672.png)

16 数组Array 函数

  1. 代码
1
2
3
4
<?php 
$cars=array("Volvo","BMW","SAAB");
var_dump($cars);
?>
结果 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200424123807212.png) **var_dump() 会返回变量的数据类型和值**
  1. 代码
1
2
3
4
<?php 
$cars=array("Volvo","BMW","SAAB");
echo $cars[0];
?>

17 字符串函数

参考https://www.w3school.com.cn/php/php_string.asp

18 常量

  1. 设置 PHP 常量
    请使用 define() 函数

    1. 它使用三个参数:

      1.首个参数定义常量的名称
      2.第二个参数定义常量的值
      3.可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。

      代码

      1
      2
      3
      4
      <?php
      define("GREETING", "你好");
      echo GREETING;
      ?>

      结果
      在这里插入图片描述

19 判断if

简单理解就是对就执行

  1. if
    代码

    1
    2
    3
    4
    5
    6
    7
    <?php
    $t=1 ;

    if ($t<2) {
    echo "Have a good day!";
    }
    ?>

    在这里插入图片描述

  2. if…else
    代码

1
2
3
4
5
6
7
8
9
<?php
$t=2;

if ($t<2) {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>
结果 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200424125307131.png)
  1. if…elseif….else

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if (条件) {
    条件为 true 时执行的代码;
    } elseif (condition) {
    条件为 true 时执行的代码;
    } else {
    条件为 false 时执行的代码;
    }
    ?>

    20 Switch 语句

如果您希望有选择地执行若干代码块之一,请使用 Switch 语句
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块
和C语言的是一样的

  1. 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	<?php
    $a="orange";

    switch ($a) {
    case "apple":
    echo "1";
    break;
    case "banana":
    echo "2";
    break;
    case "orange":
    echo "3";
    break;
    default:
    echo "4";
    }
    ?>

    结果
    在这里插入图片描述

21 while 循环

  1. while 循环
    代码

    1
    2
    3
    4
    5
    6
    7
    8
    <?php 
    $x=1;

    while($x<=5) {
    echo "这个数字是:$x <br>";
    $x++;
    }
    ?>

    结果
    在这里插入图片描述

  2. do…while 循环
    循环首先会执行一次代码块,然后检查条件,如果指定条件为真,则重复循环
    代码

1
2
3
4
5
6
7
8
 <?php 
$x=1;

do {
echo "这个数字是:$x <br>";
$x++;
} while ($x<=5);
?>
结果 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200425104442522.png)

22 for 循环

和c一样

  1. 代码

    1
    2
    3
    4
    5
    <?php 
    for ($x=0; $x<=10; $x++) {
    echo "数字是:$x <br>";
    }
    ?>

    结果
    在这里插入图片描述

23 foreach 循环

foreach 循环只适用于数组,并用于遍历数组中的每个键/值对

  1. 代码
1
2
3
4
5
6
7
<?php 
$colors = array("1","2","3","4");

foreach ($colors as $value) {
echo "$value <br>";
}
?>
结果 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200425105002556.png)

24 函数

定义函数用function来定义

  1. 定义函数
    代码

    1
    2
    3
    4
    5
    6
    7
    <?php
    function a() {
    echo "Hello world!";
    }

    a(); // 调用函数
    ?>

    结果
    在这里插入图片描述

  2. 函数参数
    代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function familyName($fname) {
    echo "现在数字是:$fname <br>";
    }

    familyName("1");
    familyName("2");
    familyName("3");
    familyName("4");
    familyName("5");
    ?>

    结果
    在这里插入图片描述

  3. 默认参数值
    代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    function setHeight($minheight=50) {
    echo "现在值是 : $minheight <br>";
    }

    setHeight(350);
    setHeight(); // 将使用默认值 50
    setHeight(135);
    setHeight(80);
    ?>

    结果
    在这里插入图片描述

  4. 函数 - 返回值
    代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    function sum($x,$y) {
    $z=$x+$y;
    return $z;
    }

    echo "5 + 10 = " . sum(5,10) . "<br>";
    echo "7 + 13 = " . sum(7,13) . "<br>";
    echo "2 + 4 = " . sum(2,4);
    ?>

    结果
    在这里插入图片描述

25 数组

array()函数中创建数组
count() 函数用于返回数组的长度(元素数)

  1. 单数组
    代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $cars=array("porsche","BMW","Volvo");
    $arrlength=count($cars);

    for($x=0;$x<$arrlength;$x++) {
    echo $cars[$x];
    echo "<br>";
    }
    ?>

    结果
    在这里插入图片描述

  2. 关联数组

    代码

1
2
3
4
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
echo "Elon is " . $age['Elon'] . " years old.";
?>
结果 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200425111232149.png)

26 超全局

这些超全局变量是:

  1. $GLOBALS
  2. $_SERVER
  3. $_REQUEST
  4. $_POST
  5. $_GET
  6. $_FILES
  7. $_ENV
  8. $_COOKIE
  9. $_SESSION

开始介绍

  1. 第一个$GLOBALS
    $GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)
    PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
    下面的例子展示了如何使用超级全局变量 $GLOBALS:

    代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php 
    $x = 75;
    $y = 25;

    function addition() {
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
    }

    addition();
    echo $z;
    ?>

    结果
    在这里插入图片描述

  2. 第二个$_SERVER
    $_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
    代码

1
2
3
4
5
6
7
8
9
10
11
12
13
	<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
结果 ![在这里插入图片描述](https://img-blog.csdnimg.cn/202004261222182.png) 中访问的最重要的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$_SERVER['PHP_SELF']	返回当前执行脚本的文件名。
$_SERVER['GATEWAY_INTERFACE'] 返回服务器使用的 CGI 规范的版本。
$_SERVER['SERVER_ADDR'] 返回当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME'] 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
$_SERVER['SERVER_SOFTWARE'] 返回服务器标识字符串(比如 Apache/2.2.24)。
$_SERVER['SERVER_PROTOCOL'] 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
$_SERVER['REQUEST_METHOD'] 返回访问页面使用的请求方法(例如 POST)。
$_SERVER['REQUEST_TIME'] 返回请求开始时的时间戳(例如 1577687494)。
$_SERVER['QUERY_STRING'] 返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER['HTTP_ACCEPT'] 返回来自当前请求的请求头。
$_SERVER['HTTP_ACCEPT_CHARSET'] 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST'] 返回来自当前请求的 Host 头。
$_SERVER['HTTP_REFERER'] 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
$_SERVER['HTTPS'] 是否通过安全 HTTP 协议查询脚本。
$_SERVER['REMOTE_ADDR'] 返回浏览当前页面的用户的 IP 地址。
$_SERVER['REMOTE_HOST'] 返回浏览当前页面的用户的主机名。
$_SERVER['REMOTE_PORT'] 返回用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER['SCRIPT_FILENAME'] 返回当前执行脚本的绝对路径。
$_SERVER['SERVER_ADMIN'] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER['SERVER_PORT'] Web 服务器使用的端口。默认值为 “80”。
$_SERVER['SERVER_SIGNATURE'] 返回服务器版本和虚拟主机名。
$_SERVER['PATH_TRANSLATED'] 当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] 返回当前脚本的路径。
$_SERVER['SCRIPT_URI'] 返回当前页面的 URI。
  1. 第三个$_REQUEST