6、PHP
PHP
一、PHP特点
1、可以与HTML混编,但脚本后缀名应为.php。
2、PHP注释不会在页面文档的源码中显示,而HTML页面的注释和JS的注释却可以在页面源码中显示。这是因为PHP的运行环境是服务器端,我们浏览器端获得的最终的页面内容是服务器端PHP的解释器对PHP代码处理完成后产生的结果。而HTML和JS的运行环境就是浏览器。这就是根本的区别。
3、PHP的语法错误等级有error、warning、notice,其中有语句出现error级别的错误直接会停止接下来的语句解释运行,而warning和notice只提示错误,仍然会继续解释执行接下来的语句。https://www.php.net/manual/zh/errorfunc.constants.php
二、PHP基础
1、PHP标签:
<?php 左边开始标记,右边结束标记 ?>
2、PHP变量
1)变量的声明:$变量名
第一次给变量赋值时才创建这个变量(像shell)
2)变量的释放:unset $变量名;
3)变量命名规则:严格区分大小写、字母数字下划线,不能以数字开头。
4)可变变量:$$变量名
,此变量的变量名跟随$变量名
变化。
5)引用赋值:$b=&$a
,使$b
变量指向$a
的内存空间,此时$a
和$b
指向了同一块内存空间。
6)变量的数据类型:
1、布尔类型bool(true、false):false、0、0.0、””、”0”、[]、NULL这些值会被作为条件的false。https://www.php.net/manual/zh/types.comparisons.php
2、整型int;3、浮点数float;
4、字符串string:单引号、双引号定义都可,区别在于①字符串内容对单引号和双引号以及是否转义的使用②双引号定义的字符串中包含变量名时可以取变量值(最好把变量用{}括起来),单引号只可表面输出变量名。
比较特别的一种string定义方式——定界符定义:使用定界符定义一个字符串时,字符串的内容可以随意使用特殊符号,无需担心转移符号所带来的繁杂困扰
1
2
3
4 $str = <<<大写字母开头的符号标识
......................
大写字母开头的符号标识;
//注意定界符的格式特别严谨,结束符的行只能由符号标识和一个分号,其它什么元素都不能有 字符串相关函数
1 strstr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] ) : string #返回haystack中第一次出现needle的位置直到结束,如果before_needle为True,则只返回needle第一次出现位置之前的字符串5、数组;6、对象;
7、常量:
1
2
3
4
5
6
7
8
9
10
11
12 常量的定义:define("常量名","常量内容");全局/整个脚本文件有效。
预定义的常量:
__FILE__ 当前文件的绝对路径/文件名
__LINE__ 当前代码行数
__FUNCTION__ 当前函数名
__CLASS__ 当前的类名
__METHOD__ 当前对象的方法名
__DIR__ 当前工作目录
PHP_OS 解释PHP脚本的操作系统环境
PHP_VERSION PHP版本
DIRECTORY_SEPARATOR 操作系统文件分隔符 win\ linux/
\x00 \x01 #php标识二进制数据的方式
7)变量的作用域:
三种类型变量:Local(局部 函数内定义)、Global(全局 函数外定义)、Static(静态 关键字定义)
当需要函数内使用全局变量时需要使用
global
关键字声明,也可使用$GLOBALS['变量名']
访问。
3、PHP运算符
1)算术运算符:a .= b/ a = a . b #字符串的连接
2)比较运算符:
1 | #注意在php中 6 == "6" 为true,“==”不在乎类型只在乎内容,"==="在乎类型。 |
3)逻辑运算符:
1 | and、or、&&、||、!、xor(异或) #逻辑运算符运算的值是true和false |
4)数组运算符:
运算符 | 名称 | 描述 |
---|---|---|
x + y | 集合 | x 和 y 的集合 |
x == y | 相等 | 如果 x 和 y 具有相同的键/值对,则返回 true |
x === y | 恒等 | 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true |
x != y | 不相等 | 如果 x 不等于 y,则返回 true |
x <> y | 不相等 | 如果 x 不等于 y,则返回 true |
x !== y | 不恒等 | 如果 x 不等于 y,则返回 true |
5)组合比较符:
1 | $c = $a <=> $b; |
6)shell命令执行符:两个反引号`,页面返回执行结果
7)屏蔽warn、notice符:@
,在变量前加
三、常见的PHP语句
1、phpinfo()
2、echo
#输出
3、var_dump()
#输出变量值以及变量内容
四、PHP的流程控制
https://www.php.net/manual/zh/language.control-structures.php
if、switch、while、do while、for和C语言相同;
特殊:
1、break n
跳出n层循环,比如for嵌套三个,在内层可以break 3,直接跳出结束3层循环。
2、die()
、exit()
结束脚本执行/PHP解释器进程。
五、PHP函数
1 | #参数传递方式: |
六、PHP数组
PHP的数组是一种可承载复合类型的数组,可理解为一种随意的map。键值对类型随意,潇洒。
1 | //以下是菜鸟教程讲解,个人认为PHP的数组就是随意的Map,无数组类型之分。 |
七、PHP危险函数
1 | eval($POST['1']) #将字符串作为PHP代码执行 |
八、验证登录表单/文件上传实例
1 | isset($变量名) #验证变量是否被定义过 |
九、PHP后门
1 | 'a']($_GET['b']); $_GET[ |
1 |
|
十、PHP伪协议
https://www.php.net/manual/zh/wrappers.php
十一、PHP正则表达式
1 | /i (忽略大小写) |