☰
新手勇闯网络安全 | PHP基础(一)
2026/10/3 16:50:40 网站建设 项目流程

Web 安全的核心在后端,而后端语言中 PHP 占据了半壁江山。DVWA、SQLi-Labs 等经典靶场都是 PHP 写的,不懂 PHP 就看不懂漏洞原理。这一篇从最基础开始:PHP 是什么、怎么运行、变量和数组怎么用、GET 和 POST 有什么区别。


一、PHP 是什么

PHP(全称:PHP: Hypertext Preprocessor)是一种广泛使用的服务器端脚本语言,专为 Web 开发设计。

核心工作模式:客户端(浏览器)发起请求,服务器端执行 PHP 代码,生成 HTML 响应并返回给客户端。

关键特征:用户仅能获取运行后的结果(HTML 页面),无法查看 PHP 核心源代码。这与 HTML/CSS/JavaScript 等前端语言不同 —— 前端代码在浏览器端执行,用户可以直接查看源码;而 PHP 在服务器端执行,用户看到的只是执行后的输出。


二、PHP 运行环境

2.1 为什么本地双击 .php 文件无效

双击电脑上的.php文件会发生什么?不是执行,而是用记事本打开显示源代码。

原因很简单:PHP 代码在本地电脑上没有服务器环境,无法执行,只会以文本形式在编辑器中打开。PHP 必须在 Web 服务器(Apache/Nginx)环境中才能被解析执行。

2.2 使用 phpstudy 集成环境

推荐使用phpstudy等集成环境,一键安装 Apache/Nginx + MySQL + PHP,省去手动配置的麻烦。

搭建步骤:

  1. 访问 phpstudy 官网下载并安装
  2. 安装后启动 Apache 或 Nginx 服务
  3. 找到网站根目录(Windows 默认为C:\phpstudy\WWW,Linux 为/var/www)
  4. 在根目录新建 PHP 文件,写入代码
  5. 浏览器访问http://localhost/文件名.php查看运行结果

为什么要放到 WWW 目录下?这是 Web 服务器配置的默认根目录,只有该目录下的文件才会被 PHP 解析器识别并对外提供访问服务。


三、PHP 基础语法

3.1 PHP 标签与输出

PHP 代码必须写在<?php ?>标签内:

\<?php echo "Hello, 世界!"; ?>

常用输出方式:

方式说明
echo输出一个或多个字符串,最常用
print输出一个字符串,返回值始终为 1
var_dump()输出变量的类型与值,适用于调试

3.2 变量

变量是用来存放数据的容器。PHP 变量有三大核心规则:

规则说明示例
必须以$符号开头所有变量名前必须加美元符$username、$age
严格区分大小写$name和$Name是两个完全不同的变量$name != $Name
弱类型语言无需声明类型,PHP 根据赋值自动判断$age = 20(整数)、$name = "小明"(字符串)

命名风格推荐使用蛇形命名法(snake_case),如$user_name、$file_path。

3.3 数据类型

PHP 是弱类型语言,常见数据类型包括:

类型说明示例
整数(int)整数数值$age = 18
字符串(string)文本数据$name = "张三"
布尔值(bool)真或假$is_admin = true
数组(array)存放多个数据的复合类型$arr = ["a", "b"]

3.4 字符串操作

字符串拼接:PHP 使用.运算符拼接字符串(注意不是+):

\$dir = "./uploads/"; \$file = "shell.php"; \$full\_path = \$dir . \$file; // 结果:"./uploads/shell.php"

四、数组(Array)

数组是一种可以存放多个数据的复合类型,是有序映射(键 => 值)。PHP 数组分为三种:

4.1 索引数组

键默认是从 0 开始的整数:

\$students = \["小明", "小红", "小刚"]; echo \$students\[0]; // 输出:小明

4.2 关联数组

键可以自定义为字符串或数字:

\$user = \["name" => "李四", "age" => 30, "add" => "北京"]; echo \$user\["name"]; // 输出:李四

4.3 多维数组

数组中的元素也是数组:

\$users = \[ &#x20; \["name" => "张三", "age" => 20], &#x20; \["name" => "李四", "age" => 25] ]; echo \$users\[1]\["name"]; // 输出:李四

五、GET 和 POST 提交方式

Web 交互中,客户端向服务器传递数据主要通过 GET 和 POST 两种方式。

对比维度GET 请求POST 请求
数据位置参数附加在 URL 后面,对用户完全可见数据在请求体中传输,URL 中不可见
长度限制受 URL 长度限制(通常 2KB-8KB),不适合大量数据可传输大量数据,支持文件上传,理论上无大小限制
适用场景数据查询、页面跳转等非敏感操作(如百度搜索)登录、注册、文件上传等敏感或大数据量操作
安全性参数在 URL 中可见,相对不安全参数在请求体中,相对安全

典型应用:

  • 百度搜索使用 GET 传递搜索关键词,参数在 URL 中可见
  • 微信登录使用 POST 传递账号密码,参数在请求体中隐藏
  • 文件上传 100% 用 POST,因为需要传输大量数据

在 PHP 中,通过$_GET和$_POST超全局变量获取对应方式提交的数据。


六、知识小结

知识模块核心内容一句话速记
PHP 本质服务器端脚本语言,用户看不到源码后端执行,前端看结果
运行环境phpstudy 集成环境,文件放 WWW 目录双击无效,要走服务器
PHP 标签代码写在<?php ?>内标签包裹
输出echo 最常用,var_dump 用于调试echo 输出
变量$ 开头、区分大小写、弱类型三规则
字符串拼接用.运算符,不是+点号拼接
索引数组键从 0 开始的整数$arr[0]
关联数组自定义字符串键名$arr[“key”]
多维数组数组嵌套数组$arr[0][“key”]
GETURL 传参,可见,适合查询查东西用 GET
POST请求体传参,隐藏,适合登录上传传数据用 POST

PHP 基础语法是后续 Web 漏洞学习的前提。理解了变量、数组和 GET/POST 数据传递,才能看懂 SQL 注入中参数如何进入查询、文件上传中文件名如何被处理、XSS 中输出如何被渲染。下一篇将进入运算符与流程控制。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询