后端学习笔记

PHP

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站开发语言。主要适用于Web开发领域。

PHP是一门弱类型语言:不必向PHP声明该变量的数据类型,PHP会根据变量的值,自动把变量转为正确的数据类型

基础语法:


  1. PHP脚本可以放在文档中的任何位置。PHP脚本以<?PHP开始,以?>结束。

  2. PHP文件的默认文件扩展名为.php

  3. PHP文件通常包含HTML标签和一些PHP代码

输出hello world:

1
2
3
4
<?php
echo "hello,world"
print "hello,world"
?>

注释:


单行注释://

多行注释:/**/

变量:


变量以“$”符号开始,后面跟着变量的名称,变量名必须以字母或者下划线开始,变量名只能包含字母,数字,下划线。

变量名是区分大小写的!

1
2
3
4
5
6
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

外部变量:

1
2
3
4
5
6
7
8
<?php
highlight_file(__file__); //将php代码显示在网页上
$u = $_POST["username"]; //通过POST方法提交数据
echo $u.'<br />';

$passwd = $_POST["pwd"];
echo $passwd."<br />";
?>

数据类型

程序中的数据种类繁多,可以根据类型不同,分为几大类:

String(字符串)
Integer(整型)
Float(浮点型)
Boolean(布尔型)
Array(数组)
Object(对象)
NULL(空值)
Resour
  1. 字符串

一个字符串是一串字符的序列,就像 “Hello world!”。

可以将任何文本放在单引号和双引号中

1
2
3
4
5
6
7
<?php 
$x = "Hello world!";
echo $x;
echo "<br>";
$x = 'Hello world!';
echo $x;
?>
  1. 整数

整数是一个没有小数的数字。

1
2
3
4
5
6
<?php 
$x = 1359;
$x = -345; // 负数
$x = 0x8C; // 十六进制数
$x = 047; // 八进制数
?>
  1. 小数(浮点数)

浮点数是带小数部分的数字,或是指数形式。

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

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

$x = 2.4e3;
var_dump($x);
?>

  1. 布尔

布尔型可以是 TRUE 或 FALSE,TRUE标识真,FALSE标识假。

1
2
3
4
5
<?php
$x=true;
$y=false;
?>

  1. PHP 对象 (Object)

对象类型可以用于存储数据,使用class关键字声明类对象,类包含属性和方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//类名
class Car{
//属性
var $color;
//方法
function fun1() {
echo "方法1";
}

}
?>

  1. null值

NULL 值表示变量没有值,NULL 是数据类型为 NULL 的值。

1
2
3
4
5
6
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>

数组:

数组指数据的组合,能够在单个变量中存储多个值。

可以将数组看作一个存储数据的盒子,盒子中有很多个格子,每个格子中都可存储一个数据。

数组名:盒子名

元素:格子中的数据

索引:格子的位置

长度:格子的数量

  1. 创建数组并读取数据

通过索引读取数组中的元素 :$数组名[索引];

索引从0开始。即数组中的第一个元素索引为0,以此类推。

1
2
3
4
5
6
7
<?php
$cars=array("Volvo","BMW","Toyota");

//通过索引 读取数组中的所有元素 $数组名[索引];
echo "$cars[0].$cars[1].$cars[2]";
?>

  1. 获取数组长度

count() 函数用于返回数组的长度。

1
2
3
4
5
<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>

  1. 遍历数组

遍历指的是读取数组中的所有数据,使用 for 循环:

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

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

PHP流程控制语句

if条件控制语句

1
2
3
4
5
6
7
8
9
10
<?php
if(判断语句1){
执行语句体1
}elseif(判断语句2){
执行语句体2
} elseif(判断语句n){
执行语句体n
}else{
最后的else语句可选
}

while循环语句

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

while ($i <= 5) {
echo $i ;
$i++;
}

?>

for循环语句

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

局部和全局作用域


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

Static作用域:


当一个函数完成的时候,它的所有变量通常都会被删除,然而,有时候希望某个变量不要被删除,要做到这一点,请在第一次声明变量的时候使用Static关键字

1
2
3
4
5
6
7
8
9
10
11
<?php
function test()
{
static $s=0; //删除static关键字后,所有结果都是0
echo $s;
$s++;
echo PHP_EOL; //换行符
}
test();
test();
?>

正则表达式

范例:preg_match(“/[a-zA-Z0-9~-=!\^+()]/“, $a);

整个表达式用 / 包裹,这是正则表达式的开始和结束标记。<br>
a-zA-Z0-9: 表示匹配任何大小写字母和数字。 <br>
~-=!^+(): 表示匹配波浪号、减号、等号、感叹号、插入符号、加号和括号这些特定的符号。<br>

在正则表达式中,反斜杠 \ 是一个特殊字符,它用于转义其他字符,使其失去原来的特殊含义,变成普通字符。以下是一些常见的情况,你可能需要使用反斜杠进行转义:
转义特殊字符: 有些字符在正则表达式中具有特殊含义,例如 .、*、+、?、(、)、[、]、{、} 等。如果你想匹配这些字符本身,而不是它们的特殊含义,需要使用反斜杠进行转义。

最常见且关键的函数

preg_match()函数:匹配成功返回1,失败返回0

phpinfo()

1
2
3
<?php
phpinfo();
?>

phpinfo是一个函数(功能),这个函数会显示一个当前电脑(服务器)的详细的PHP信息。(有时也会藏flag)

eval()函数:

eval() 是一个在 PHP 中用于执行字符串作为 PHP 代码的函数。eval() 接受一个字符串参数 $code,该字符串包含要执行的 PHP 代码。当 eval() 被调用时,它会将字符串作为 PHP 代码解析并执行。

1
2
3
4
<?php
$a='phpinfo();';
eval($a);
?>

文件包含

文件包含是一种在编程中将一个文件的内容插入到另一个文件中的技术。在PHP中,文件包含通常使用include、require、include_once、require_once等语句来实现。例如include ‘flag.php’