php

Last updated on 6 months ago

php

基础语法

构成

1
2
3
<?php

?>

php代码要被<?php ?>包裹起来

输出

echo

可以输出多个内容(用,分隔开),结尾必须加;

1
2
3
<?php
echo 1,2,3;
?>

print

只能输出单个内容

1
2
3
<?php
print 1;
?>

变量

1
2
3
$a=1;
$b='phpstudy';
echo $a,$b;

php打印变量时要带上$符号

变量不能以数字开头,不能带空格

数据类型

类型 描述
布尔(Boolean) truefalse
整型(Integer)
浮点(Float)
字符串(String)

var_dump() 可以打印数据类型和值,var_dump()是个函数

1
2
$a=1;
var_dump($a);
'
'```换行
1
2
3
4
5

#### 引号区别

双引号

$str=”abc”;
echo “$str 123”; //abc 123 双引号内可以解析变量

1
2
3

单引号

$str=”abc”;
echo ‘$str 123’; //$str 123 单引号原样打印

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#### 特殊数据类型

| 类型 | 描述 |
| -------- | ------ |
| array | 数组 |
| object | 对象 |
| callable | 可调用 |
| iterable | 可迭代 |
| NULL | 空值 |
| resource | 资源 |

#### 数组

##### array()

$a = array(“first”,”second”,”third”);
echo “the first element is “.$a[0].” and the second element is “.$a[1];

1
2
3

也可以用[]创建数组

$c=[‘A’,’B’,’C’];

1
2
3
4
5
6
7

也可以用键值对的形式创建数组(类似c的二维数组),每个键名都是只能用一次的,但是键名可以有很多个,键值可以是任意,可以是字符串,整型,布尔,也可以是数组,

键和键用逗号分隔

引用时arr['a'] ,必须加'',键名可以和外界的变量重名,因为所处命名空间不同

$arr=array(
‘a’=1, //此时’a’的值为1,arr[‘a’]的值为1,是int型
‘b’=’1’, //arr[‘b’]=’1’,是string型
‘c’=wefu, //报错
);

1
2
3
4
5

##### compact()

和array()类似,但是可以解析变量,会自动将变量名作为键名,变量对应的值作为键值存进数组

$firstname = “Aabyss”;
$lastname = “ZG”;
$age = “21”;
$result = compact(“firstname”, “lastname”, “age”);
print_r($result);

1

Array
(
[firstname] => John
[lastname] => Doe
)

1
2
3
4
5
6
7
8

### 运算符

#### 按位与&

```php
$a=7;
echo ($a & 1); //让一个数的二进制对1进行按位与操作,则可以判断这个数是否为奇数,7的二进制是111,跟001进行按位与,结果是1,所以是真,即7为奇数 打印出的值为1

image-20230707101456164

魔术常量

1
2
3
4
5
6
7
echo __LINE__;         // 输出当前行号的整数值
echo __FILE__; // 输出当前文件的完整路径和文件名
echo __DIR__; // 输出当前文件所在的目录
echo __FUNCTION__; // 输出当前函数(或方法)的名称
echo __CLASS__; // 输出当前类的名称
echo __METHOD__; // 输出当前方法的名称
echo __NAMESPACE__; // 输出当前命名空间的名称

函数定义

1
2
3
4
function <functionname>(<type> $variable): <return type> { 
// 函数体
}
function bubbleSort(array $arr): array {

<type>和<return type>可以省略

回调函数及webshell免杀

webshell定义

webshell通常是一个类似可执行文件的.php文件,类似木马

通常情况下,Webshell是一个以.php为扩展名的文件,它可以被上传到受攻击的Web服务器上。Webshell的设计目的是为了在受感染的服务器上执行各种恶意操作。

Webshell的外观可以与普通的PHP脚本文件相似,但其功能更加强大和危险。它通常包含恶意代码,使攻击者能够通过Web界面与服务器进行交互,并执行各种操作,如执行系统命令、访问文件系统、修改文件内容、上传/下载文件、连接数据库等。

免杀

  1. 修改Webshell代码:通过对Webshell代码进行修改,使其不易被安全防护软件的签名或行为检测规则所识别。这可以包括修改变量名、函数名、代码结构等。
  2. 绕过特征检测:针对安全防护软件的特征检测功能,攻击者可能会修改Webshell的特征,使其不再符合常见的恶意代码特征,从而逃避检测。

回调函数

简单来说就是一个函数的参数包含另一个函数,即在一个函数内使用另一个函数

1.array_map()

array_map()用法就是array_map(回调函数,要被进行操作的参数)

1
2
3
4
5
6
7
8
9
10
11
12
13
// 定义一个回调函数
function square($n) {
return $n * $n;
}

// 定义一个数组
$numbers = [1, 2, 3, 4, 5];

// 应用回调函数到数组的每个元素
$result = array_map("square", $numbers);

// 输出处理后的结果
print_r($result);

php
https://blog.yblue.top/2023/08/20/php/
Posted on
August 20, 2023
Licensed under