渗透测试-PHP语法

1. PHP 基本语法结构

PHP 代码需要包含在 <?php?> 标签中。

1
2
3
<?php
// 这里是 PHP 代码
?>

注意:如果文件是纯 PHP 代码,最好在文件末尾省略 ?> 结束标签,这样可以避免意外输出空格或换行符。


2. 变量

  • 变量以 $ 符号开头,后面跟变量名。
  • 变量名必须以字母或下划线开头。
  • 变量名不能以数字开头。
  • 变量名只能包含字母、数字和下划线。
  • 变量名区分大小写。
1
2
3
4
5
6
<?php
$txt = "Hello World!";
$x = 5;
$y = 10.5;
$is_active = true;
?>

3. 数据类型

PHP 是一种弱类型语言,你不需要声明变量的数据类型。

类型 描述 示例
String 字符串 $str = "Hello";
Integer 整数 $int = 123;
Float 浮点数 $float = 3.14;
Boolean 布尔值 $bool = true;
Array 数组 $arr = array("a", "b", "c");
Object 对象 $obj = new MyClass();
NULL 空值 $n = null;

检查数据类型:

1
2
3
4
<?php
var_dump($str); // 输出变量的值和类型
echo gettype($int); // 只输出类型
?>

4. 运算符

算术运算符

1
2
3
4
5
6
$x + $y;   // 加法
$x - $y; // 减法
$x * $y; // 乘法
$x / $y; // 除法
$x % $y; // 取模
$x ** $y; // 幂运算

赋值运算符

1
2
3
$x = 5;    // 赋值
$x += 3; // $x = $x + 3;
$x -= 2; // $x = $x - 2;

比较运算符

1
2
3
4
5
6
7
$x == $y;  // 等于
$x === $y; // 全等(值和类型都相等)
$x != $y; // 不等于
$x <> $y; // 不等于
$x !== $y; // 不全等
$x < $y; // 小于
$x > $y; // 大于

逻辑运算符

1
2
3
4
5
$x and $y;  // 与
$x or $y; // 或
$x && $y; // 与
$x || $y; // 或
!$x; // 非

5. 控制结构

条件语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// if 语句
if ($x > $y) {
echo "x 大于 y";
} elseif ($x == $y) {
echo "x 等于 y";
} else {
echo "x 小于 y";
}

// switch 语句
$color = "red";
switch ($color) {
case "red":
echo "红色";
break;
case "blue":
echo "蓝色";
break;
default:
echo "其他颜色";
}
?>

循环语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// while 循环
$i = 1;
while ($i <= 5) {
echo $i;
$i++;
}

// for 循环
for ($i = 0; $i < 5; $i++) {
echo $i;
}

// foreach 循环(用于数组)
$colors = array("red", "green", "blue");
foreach ($colors as $value) {
echo $value;
}
?>

6. 数组

索引数组

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

echo $cars[0]; // 输出 Volvo
?>

关联数组

1
2
3
4
5
6
7
<?php
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);
// 或
$age = ["Peter"=>35, "Ben"=>37, "Joe"=>43];

echo $age["Peter"]; // 输出 35
?>

数组操作

1
2
3
4
5
6
<?php
$fruits = ["apple", "banana"];
$fruits[] = "orange"; // 添加元素
count($fruits); // 获取数组长度
sort($fruits); // 排序数组
?>

7. 函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// 定义函数
function greet($name, $greeting = "Hello") {
return "$greeting, $name!";
}

// 调用函数
echo greet("John"); // 输出 Hello, John!
echo greet("Jane", "Hi"); // 输出 Hi, Jane!

// 匿名函数
$square = function($n) {
return $n * $n;
};
echo $square(5); // 输出 25
?>

8. 表单处理

PHP 常用于处理 HTML 表单数据。

HTML 表单:

1
2
3
4
5
<form method="post" action="welcome.php">
名字: <input type="text" name="name">
年龄: <input type="text" name="age">
<input type="submit">
</form>

PHP 处理脚本 (welcome.php):

1
2
3
4
5
6
7
8
9
10
11
<?php
// 获取表单数据
$name = $_POST['name'];
$age = $_POST['age'];

echo "你好,$name!你 $age 岁了。";

// 安全建议:始终验证和清理用户输入
$name = htmlspecialchars($_POST['name']);
$age = (int)$_POST['age']; // 转换为整数
?>

9. 与数据库交互(MySQLi 示例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// 连接数据库
$conn = new mysqli("localhost", "username", "password", "database");

// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}

// 查询数据
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - 名字: " . $row["name"]. " - 邮箱: " . $row["email"]. "<br>";
}
} else {
echo "0 结果";
}

// 关闭连接
$conn->close();
?>

10. 错误处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// 基本错误处理
if (!file_exists("welcome.txt")) {
die("文件不存在");
} else {
$file = fopen("welcome.txt", "r");
}

// 异常处理
try {
// 可能出错的代码
if ($x == 0) {
throw new Exception("除数不能为零");
}
echo 10 / $x;
} catch (Exception $e) {
echo "错误信息: " . $e->getMessage();
}
?>

11. 包含文件

1
2
3
4
5
6
7
<?php
include 'header.php'; // 如果文件不存在会继续执行
require 'config.php'; // 如果文件不存在会停止执行

include_once 'functions.php'; // 确保只包含一次
require_once 'database.php'; // 确保只包含一次
?>

总结

PHP 语法的主要特点:

  1. <?php 开始,以 ?> 结束
  2. 所有变量以 $ 开头
  3. 语句以分号 ; 结束
  4. 使用点号 . 进行字符串连接
  5. 支持面向对象和面向过程编程
  6. 拥有丰富的内置函数库

建议通过实际项目来练习这些语法概念,比如创建一个简单的博客系统、留言板或用户注册登录系统。