HTML

超文本标记语言是一种用于创建网页的标准标记语言。
可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。
HTML 是用来描述网页的一种语言。
HTML 是一种标记语言
标记语言是一套标记标签
HTML 使用标记标签来描述网页

HTML语法结构

<!DOCTYPE html>
<html>

<head>

<meta charset="utf-8">

<title>菜鸟教程(runoob.com)</title>

</head>

<body>

<h1>我的第一个标题</h1>

<p>我的第一个段落。</p >

</body>
</html>

<!DOCTYPE html> 声明为 HTML5 文档
<html> 元素是 HTML 页面的根元素

<head> 元素包含了文档的元(meta)数据,如 <meta charset="utf-8"> 定义网页编码格式为 utf-8。

<title> 元素描述了文档的标题
<body> 元素包含了可见的页面内容

<h1> 元素定义一个大标题

<p> 元素定义一个段落
<button> 标签定义可点击的按钮
<input>元素用于为基于 Web 的表单创建交互式控件,以便接受来自用户的数据
<div>:内容划分元素
<img> 标签用于在 HTML 页面中嵌入图像
<iframe>表示嵌套的browsing context。它能够将另一个 HTML 页面嵌入到当前页面中
<a> 标签定义超链接,用于从一张页面链接到另一张页面
id 全局属性定义了一个全文档唯一的标识符
从技术上讲,id 属性的值可以包含除了空白字符的任何字符。然而,为了避免无意中的错误,只能使用 ASCII 字母、数字、’_’ 和 ‘-‘,并且id 属性的值应该以字母开头。
全局属性 class 的值是一个以空格分隔的元素的类名列表,它允许 CSS 和 Javascript 通过类选择器 或 DOM 方法来选择和访问特定的元素。尽管对 class 的命名没有要求,但 web 开发者最好使用可以表达元素语义目的的名称。
<img>src属性是必须的,它包含了你想嵌入的图片的路径。

  1. 绝对 URL - 链接到托管在其他网站上的外部图像。

  2. 相对 URL - 链接到托管在网站内部的图像。
    href 属性规定链接指向的页面的 URL。

    PHP

    语法

    变量

    规则:
    变量以 $ 符号开始
    变量名必须以字母或者下划线字符开始
    变量名不能包含空格
    变量名是区分大小写的

    PHP NULL 值

    NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
    NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
    可以通过设置变量值为 NULL 来清空变量数据

    PHP 资源类型

    PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。
    常见资源数据类型有打开文件、数据库连接、图形画布区域等。
    由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。

    PHP 类型比较

    虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。
    松散比较:使用两个等号 == 比较,只比较值,不比较类型。
    严格比较:用三个等号 === 比较,除了比较值,也比较类型。

    PHP常量

    设置 PHP 常量

    设置常量,使用 define() 函数。
    bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
    该函数有三个参数:
    name:必选参数,常量名称,即标志符。
    value:必选参数,常量的值。
    case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的

    预定义常量

    PHP 提供了一些预定义常量,可以在脚本中直接使用。这些常量通常用于获取 PHP 的配置信息、版本信息等。常见的预定义常量有:
    PHP_VERSION:当前 PHP 解析器的版本。
    PHP_OS:服务器的操作系统。
    PHP_INT_MAX:最大的整数值。
    E_ERROR、E_WARNING、E_PARSE 等:错误报告级别。

    PHP字符串变量

    PHP 中的字符串变量
    字符串变量用于包含有字符的值。
    在创建字符串之后,我们就可以对它进行操作了。可以直接在函数中使用字符串,或者把它存储在变量中。

    PHP 并置运算符

    在 PHP 中,只有一个字符串运算符。
    并置运算符 (.) 用于把两个字符串值连接起来。

    PHP strlen() 函数

    有时知道字符串值的长度是很有用的。
    strlen() 函数返回字符串的长度(字节数)。

    PHP strpos() 函数

    strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
    如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

    三元运算符

    (expr1) ? (expr2) : (expr3)
    对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
    组合比较符(PHP7+)
    PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
    $c = $a <=> $b;
    解析如下:
    如果 $a > $b, 则 $c 的值为 1。
    如果 $a == $b, 则 $c 的值为 0。
    如果 $a < $b, 则 $c 的值为 -1。

    括号的使用

    我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。

    PHP条件语句

    if 语句 - 在条件成立时执行代码
    if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
    if…elseif….else 语句 - 在若干条件之一成立时执行一个代码块
    switch 语句 - 在若干条件之一成立时执行一个代码块
    PHP Switch 语句

    expression 是要被比较的表达式。
    case value: 是可能的值,如果 expression 的值等于某个 case 的值,就执行相应的代码块。
    break; 用于终止 switch 语句,防止继续执行下一个 case。
    default: 是可选的,用于指定当没有匹配的 case 时执行的代码块。

    PHP数组

    在 PHP 中创建数组
    array() 函数
    在 PHP 中,有三种类型的数组:
    数值数组 - 带有数字 ID 键的数组
    关联数组 - 带有指定的键的数组,每个键关联一个值
    多维数组 - 包含一个或多个数组的数组

    PHP 数值数组

    有两种创建数值数组的方法:
    自动分配 ID 键(ID 键总是从 0 开始):
    $cars=array(“Volvo”,”BMW”,”Toyota”);
    人工分配 ID 键:
    $cars[0]=”Volvo”;
    $cars[1]=”BMW”;
    $cars[2]=”Toyota”;
    获取数组的长度 - count() 函数
    count() 函数用于返回数组的长度(元素的数量)
    遍历数值数组
    遍历并打印数值数组中的所有值,可以使用 for 循环

    PHP 关联数组

    关联数组是使用您分配给数组的指定的键的数组。
    有两种创建关联数组的方法:
    $age=array(“Peter”=>”35”,”Ben”=>”37”,”Joe”=>”43”);
    or:
    $age[‘Peter’]=”35”;
    $age[‘Ben’]=”37”;
    $age[‘Joe’]=”43”;
    随后可以在脚本中使用指定的键
    遍历关联数组
    遍历并打印关联数组中的所有值,可以使用 foreach 循环

    PHP 数组排序

    数组中的元素可以按字母或数字顺序进行降序或升序排列。
    PHP - 数组排序函数
    sort() - 对数组进行升序排列
    rsort() - 对数组进行降序排列
    asort() - 根据数组的值,对数组进行升序排列
    ksort() - 根据数组的键,对数组进行升序排列
    arsort() - 根据数组的值,对数组进行降序排列
    krsort() - 根据数组的键,对数组进行降序排列

    PHP 超级全局变量

    PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
    PHP $GLOBALS
    $GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
    PHP $_SERVER
    $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。
    PHP $_REQUEST
    PHP $_REQUEST 用于收集HTML表单提交的数据。
    PHP $_POST
    PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”post”。
    PHP $_GET
    PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”get”。
    $GET 也可以收集URL中发送的数据。

    PHP 表单和用户输入

    PHP 中的 $_GET 和 $_POST 变量用于检索表单中的信息,比如用户输入。

    php判断字符串中是否包含指定字符串

    strpos
    $a = ‘How are you?’;
    if (strpos($a, ‘are’) !== false) {
    echo ‘true’;
    } else {
    echo ‘false’;
    }
    注意这里一定要使用 !== false 来做判断条件语句, strpos() 如果没有找到字符串则返回 FALSE

    PHP文件处理

    打开文件

    fopen() 函数用于在 PHP 中打开文件。
    此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:$file=fopen(“welcome.txt”,”r”);

    关闭文件

    fclose() 函数用于关闭打开的文件:
    fclose($file);

    检测文件末尾(EOF)

    feof() 函数检测是否已到达文件末尾(EOF)。
    在循环遍历未知长度的数据时,feof() 函数很有用。
    注释:在 w 、a 和 x 模式下,您无法读取打开的文件!
    if (feof($file)) echo “文件结尾”;

    逐行读取文件

    fgets() 函数用于从文件中逐行读取文件。
    注释:在调用该函数之后,文件指针会移动到下一行。
    while(!feof($file))
    {
    echo fgets($file). “
    “;
    }

    逐字符读取文件

    fgetc() 函数用于从文件中逐字符地读取文件。
    注释:在调用该函数之后,文件指针会移动到下一个字符。
    while (!feof($file))
    {
    echo fgetc($file);
    }
    PHP 文件上传
    创建一个文件上传表单

    <form action="upload_file.php" method="post" enctype="multipart/form-data">
    <label for="file">文件名:</label> <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
    </form>

    <form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
    <input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

    cookie 常用于识别用户。

    如何创建 Cookie?

    setcookie() 函数用于设置 cookie。
    注释:setcookie() 函数必须位于 标签之前。
    语法
    setcookie(name, value, expire, path, domain);

    PHP 的 $_COOKIE 变量用于取回 cookie 的值。
    echo $_COOKIE[“user”];
    使用 isset() 函数来确认是否已设置了 cookie

    如何删除 Cookie?

    当删除 cookie 时,您应当使过期日期变更为过去的时间点。
    setcookie(“user”, “”, time()-3600);

    PHP Session

    PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

    开始 PHP Session

    存储 Session 变量

    PHP $_SESSION 变量
    $_SESSION[‘views’]=1;

    销毁 Session

    unset() 函数用于释放指定的 session 变量:
    unset($_SESSION[‘views’]);
    session_destroy() 函数彻底销毁 session

    PHP 连接 MySQL

    先连接到数据库服务器

    MySQLi - 面向对象

    // 创建连接
    $conn = new mysqli($servername, $username, $password);
    // 检测连接 if ($conn->connect_error) {
    die(“连接失败: “ . $conn->connect_error);
    }
    echo “连接成功”;

    MySQLi - 面向过程

    // 创建连接
    $conn = mysqli_connect($servername, $username, $password);
    // 检测连接
    if (!$conn) {
    die(“Connection failed: “ . mysqli_connect_error());
    }
    echo “连接成功”;

    PHP MySQL 创建数据库

    CREATE DATABASE 语句
    // 创建数据库
    $sql = “CREATE DATABASE myDB”;
    if ($conn->query($sql) === TRUE) {
    echo “数据库创建成功”;
    } else {
    echo “Error creating database: “ . $conn->error;
    }`

    MySQL 是最流行的关系型数据库管理系统,关联数据库将数据保存在不同的表中。

    SQL语句的分类

1.DQL:数据查询语言(凡是带有select关键字的都是查询语句)

简单查询
1.1查询一个字段
select 字段名 from 表名;
注意:
select和from都是关键字。
字段名和表名都是标识符。
所有的SQL语句都以”;”结尾。

2.DML:数据操作语言(凡是对表单中的数据进行增删改的都是DML)

insert delete update
insert 增
delete 删
update 改

3.DDL:数据定义语言(凡是带有create、drop、alter的都是DDL)

DDL主要操作的是表的结构。
create:新建,等同于增
drop:删除
alter:修改

表的创建

建表的语法格式:(建表属于DDL语句)
create table 表名(
字段名1 数据类型,
字段名2 数据类型
);
表名:建议以t_或者tbl_开始。
表名和字段名都属于标识符。

MySQL中的数据类型

varchar:可变长度的字符串
会根据实际的数据长度动态分配空间。
char:定长字符串
int:数字中的整数型

插入数据insert(DML)

语法格式:
insert into 表名(字段名1,字段名2…) values(值1,值2);
注意:字段名和值要一一对应。
数量、数据类型要对应。

修改update(DML)

语法格式:
update 表名 set 字段名1=值1,字段名2=值2… where 条件;

注释语法

1.从一个 # 到行末。
2.从两个连续横杠 – 序列到行尾。 在MySQL中, - (两个连续横杠 )注释样式要求第二个破折号后跟至少一个空格或控制字符(例如空格,制表符,换行符等)。
3.从一个 /* 顺序到下一个* /结束。

查询逻辑

1、连接器:负责跟客户端建立连接、获取权限、维持和管理连接。
先连接到数据库上。
2、查询缓存
拿到一个查询请求,先到查询缓存看看。
3、分析器
没有命中查询缓存,开始执行语句。分析器开始词法分析和语法分析。
4、优化器
优化器在表里面有多个索引,决定使用哪个索引,或者多表关联的时候,决定各个表的连接顺序。
5、执行器
遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。

MySQL漏洞利用

1.密码获取

1.1暴力破解
1.2源代码泄露
1.3文件包含
1.4其他情况

2.获取webshell

2.1phpmyadminroot账号获取webshell
2.2sqlmap注入点获取webshell

3.提权

3.1mof提权
3.2Msf直接mof提权
3.3UDF提权

局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。

PHP global 关键字

global 关键字用于函数内访问全局变量。

在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字。

Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。当您希望某个局部变量不要被删除。

应在您第一次声明变量时使用 static 关键字。

参数作用域

参数是通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分。

PHP echo 和 print 语句

echo 和 print 区别:

echo - 可以输出一个或多个字符串
print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

PHP EOF(heredoc) 使用说明

PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。

使用概述:

1.必须后接分号,否则编译通不过。

2.EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
3.结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。

4.开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。

5,.内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。

1
2
`<h1>我的第一个标题</h1>
<p>我的第一个段落。</p >`
EOF; // 结束需要独立一行且前后不能空格 ?>

PHP数据类型

PHP 数组

数组可以在一个变量中存储多个值。

PHP 对象

对象数据类型也可以用于存储数据。

在 PHP 中,对象必须声明。

首先,必须使用class关键字声明类对象。类是可以包含属性和方法的结构。

然后在类中定义数据类型,再在实例化的类中使用数据类型。

PHP 资源类型

PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。