PHP 网站开发综合教程
这份教程将引导你从一个对 PHP 一无所知的新手,成长为能够独立开发动态网站的开发者。

第一部分:基础准备与学习路径
在开始写代码之前,你需要搭建好开发环境和明确学习目标。
学习目标
- 短期目标: 理解 PHP 基本语法,能够编写简单的动态网页(如显示当前时间、用户信息等)。
- 中期目标: 掌握 PHP 与 MySQL 数据库的交互,能够开发一个功能完整的动态网站(如个人博客、留言板)。
- 长期目标: 掌握 MVC 架构、使用现代框架(如 Laravel)、了解服务器部署和性能优化。
必需工具
- 代码编辑器: 用来编写和编辑代码。
- 推荐: Visual Studio Code (VS Code) (免费、强大、插件丰富)
- 备选: Sublime Text, PhpStorm (功能更全,但收费)
- 本地服务器环境: PHP 代码需要在服务器环境中才能运行,不能直接用浏览器打开
.php文件。- 推荐新手: XAMPP (集成了 Apache, MySQL, PHP 和 Perl,一键安装,非常方便)
- 备选: WAMP (Windows), MAMP (Mac)
学习路径图
graph TD
A[开始:搭建环境] --> B[第一部分:PHP 基础语法];
B --> C[第二部分:Web 交互与表单];
C --> D[第三部分:MySQL 数据库基础];
D --> E[第四部分:PHP 与数据库整合];
E --> F[第五部分:会话与用户认证];
F --> G[第六部分:内容管理系统与框架];
G --> H[第七部分:项目实战与部署];
第二部分:PHP 基础语法
这是 PHP 的核心,就像学习一门语言的单词和语法。
第一个 PHP 程序
-
启动 XAMPP 中的 Apache 和 MySQL 服务。
-
在 XAMPP 的
htdocs文件夹下创建一个新文件夹,myproject。
(图片来源网络,侵删) -
在
myproject文件夹中创建一个名为index.php的文件。 -
用 VS Code 打开
index.php,输入以下代码:<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>我的第一个 PHP 页面</title> </head> <body> <h1>你好,世界!</h1> <p>当前时间是:<?php echo date('Y-m-d H:i:s'); ?></p> </body> </html> -
在浏览器中访问
http://localhost/myproject/,你应该能看到页面标题和动态显示的当前时间。
核心概念:

<?php ... ?>:PHP 代码的标记。echo到页面的命令。date('Y-m-d H:i:s'):一个 PHP 函数,用于格式化日期和时间。
变量与数据类型
PHP 是一种弱类型语言,变量以 开头。
<?php
// 字符串
$name = "张三";
$age = 25; // 整数
$isStudent = true; // 布尔值
$grades = [90, 85, 88]; // 数组
$info = ["name" => "李四", "age" => 30]; // 关联数组
echo "姓名: " . $name . "<br>";
echo "年龄: " . $age . "<br>";
echo "是否为学生: " . ($isStudent ? "是" : "否") . "<br>";
echo "成绩: " . implode(", ", $grades) . "<br>";
echo "信息: " . $info['name'] . " 的年龄是 " . $info['age'];
?>
核心概念:
- 变量、字符串、整数、浮点数、布尔值、数组、
null。 - 字符串连接用 (点)。
- 数组有两种:索引数组和关联数组。
控制结构
-
条件语句:
$score = 85; if ($score >= 90) { echo "优秀"; } elseif ($score >= 60) { echo "及格"; } else { echo "不及格"; } -
循环语句:
// for 循环 echo "<h3>数字 1 到 5:</h3>"; for ($i = 1; $i <= 5; $i++) { echo $i . " "; } // foreach 循环 (遍历数组) echo "<h3>学生列表:</h3>"; $students = ["张三", "李四", "王五"]; foreach ($students as $student) { echo $student . "<br>"; }
函数
<?php
// 定义一个函数
function greet($name) {
return "你好, " . $name . "!";
}
// 调用函数
echo greet("赵六");
?>
第三部分:Web 交互与表单
网站的核心是“交互”,而表单是用户与网站交互的主要方式。
获取表单数据
创建一个 form.html 文件:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">用户注册表单</title>
</head>
<body>
<h2>用户注册</h2>
<form action="process.php" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required><br><br>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" required><br><br>
<button type="submit">提交</button>
</form>
</body>
</html>
现在创建 process.php 文件来处理提交的数据:
<?php
// 检查表单是否通过 POST 方法提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 从 $_POST 超全局数组中获取数据
$username = $_POST['username'];
$email = $_POST['email'];
// 对数据进行简单的处理和显示
echo "<h2>注册信息已收到!</h2>";
echo "用户名: " . htmlspecialchars($username) . "<br>";
echo "邮箱: " . htmlspecialchars($email);
// 在实际应用中,这里应该进行数据验证,然后存入数据库
} else {
echo "请通过表单提交此页面。";
}
?>
核心概念:
$_POST:一个 PHP 超全局数组,用于收集通过method="post"提交的表单数据。$_GET:用于收集通过method="get"或 URL 参数提交的数据。htmlspecialchars():一个非常重要的安全函数,可以防止 XSS(跨站脚本)攻击。
第四部分:MySQL 数据库基础
网站需要存储数据,数据库就是存放数据的地方。
创建数据库和表
-
打开 XAMPP 控制面板,点击
Admin按钮,这会打开 phpMyAdmin。 -
在 phpMyAdmin 中,点击“新建”,创建一个名为
my_blog的数据库。 -
选择
my_blog数据库,点击“SQL”选项卡,执行以下 SQL 语句来创建一个posts表:CREATE TABLE posts ( id INT(11) AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
SQL 基础语句
- 插入数据:
INSERT INTO posts (title, content) VALUES ('我的第一篇博客', '这是博客的正文内容。'); - 查询数据:
SELECT * FROM posts; -- 查询所有 SELECT title, content FROM posts WHERE id = 1; -- 查询特定ID的
- 更新数据:
UPDATE posts SET content = '更新后的内容' WHERE id = 1;
- 删除数据:
DELETE FROM posts WHERE id = 1;
第五部分:PHP 与数据库整合
我们将 PHP 和 MySQL 连接起来,实现动态数据读写。
连接数据库
创建一个 db_connect.php 文件来管理数据库连接,这是一个好习惯。
<?php
$servername = "localhost";
$username = "root"; // 默认用户名
$password = ""; // 默认密码为空
$dbname = "my_blog";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功!";
?>
读取数据并显示
创建 show_posts.php:
<?php
require 'db_connect.php'; // 引入数据库连接文件
// SQL 查询语句
$sql = "SELECT id, title, created_at FROM posts ORDER BY created_at DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出每条数据
while($row = $result->fetch_assoc()) {
echo "<h2>" . htmlspecialchars($row["title"]) . "</h2>";
echo "<p>创建时间: " . $row["created_at"] . "</p>";
echo "<hr>";
}
} else {
echo "暂无博客文章";
}
$conn->close();
?>
插入数据
创建一个 add_post.php 文件,接收表单提交的数据并存入数据库。
<?php
require 'db_connect.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 获取并清理表单数据
$title = $_POST['title'];
$content = $_POST['content'];
// 使用预处理语句来防止 SQL 注入
$stmt = $conn->prepare("INSERT INTO posts (title, content) VALUES (?, ?)");
$stmt->bind_param("ss", $title, $content); // "ss" 表示两个字符串
if ($stmt->execute()) {
echo "新文章创建成功!";
// 可以在这里重定向到文章列表页
// header("Location: show_posts.php");
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
}
$conn->close();
?>
核心概念:
- 预处理语句: 防止 SQL 注入攻击的最佳实践。
mysqli或PDO: PHP 操作数据库的两种主要方式。PDO更现代,支持多种数据库。
第六部分:会话与用户认证
让用户登录、记住登录状态,这是网站的核心功能之一。
启动会话
在需要使用会话的 PHP 文件的最开始(任何 HTML 输出之前)加上:
<?php session_start(); // 启动会话 ?>
用户登录逻辑
创建 login.php:
<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = $_POST['password'];
// 这里应该查询数据库验证用户名和密码
// 为了演示,我们使用硬编码的值
if ($username === "admin" && $password === "password123") {
// 验证成功,将用户信息存入会话
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
header("Location: welcome.php"); // 重定向到欢迎页
} else {
$error = "用户名或密码错误!";
}
}
?>
<!-- 登录表单 HTML... -->
保护页面
创建 welcome.php,只有登录用户才能访问:
<?php
session_start();
// 检查用户是否已登录
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
header("Location: login.php"); // 如果未登录,重定向到登录页
exit;
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>欢迎页面</title>
</head>
<body>
<h1>欢迎, <?php echo htmlspecialchars($_SESSION['username']); ?>!</h1>
<p>这是一个受保护的页面。</p>
<a href="logout.php">退出登录</a>
</body>
</html>
用户退出
创建 logout.php:
<?php
session_start();
// 清空所有会话变量
$_SESSION = array();
// 销毁会话
session_destroy();
// 重定向到登录页
header("Location: login.php");
exit;
?>
第七部分:进阶学习 - 框架与项目实战
当你掌握了以上所有基础后,就可以进入更高级的领域了。
为什么使用框架?
- 开发效率高: 框架提供了“脚手架”,帮你处理了重复性的工作(如路由、数据库操作、用户认证)。
- 代码结构清晰: 强制你遵循 MVC 等设计模式,使代码更易于维护和扩展。
- 安全性高: 框架内置了许多安全措施(如 CSRF 防护、XSS 防护)。
- 生态系统丰富: 有大量的第三方扩展包(Composer)和社区支持。
主流 PHP 框架
- Laravel: 最受欢迎的现代 PHP 框架,语法优雅,文档完善,社区活跃。(推荐新手入门)
- Symfony: 非常强大和灵活的企业级框架,组件化程度高。
- ThinkPHP: 国内非常流行的框架,对中文支持好,文档和社区资源丰富。
项目实战建议
- 个人博客系统
- 功能:文章列表、文章详情、文章发布、文章分类、评论。
- 技术:Laravel + MySQL + Bootstrap (或 Tailwind CSS)。
- 简单的任务管理系统
- 功能:用户注册登录、创建任务、查看任务列表、标记任务完成。
- 技术:原生 PHP (或 Slim 微框架) + MySQL + 原生 JavaScript。
第八部分:推荐资源
- 官方文档:
- 在线教程:
- W3School PHP 教程:非常适合快速入门和查询。
- 菜鸟教程 PHP全面,实例丰富。
- Laravel 学院:国内最权威的 Laravel 学习社区。
- 视频课程:
- Bilibili: 搜索“PHP 从入门到精通”、“Laravel 教程”,有大量免费且优质的视频课程。
- YouTube: 搜索 "PHP for beginners", "Laravel tutorial"。
- 社区:
- Stack Overflow: 全球最大的程序员问答社区。
- V2EX: 国内高质量的程序员社区。
总结与建议
- 动手实践: 理论看再多不如亲手敲一遍代码,跟着教程一步步做,然后尝试自己修改和扩展。
- 多查资料: 遇到问题,先尝试自己解决,然后学会使用搜索引擎和官方文档。
- 阅读优秀代码: 去 GitHub 上找一些开源的 PHP 项目,看看别人是怎么写的。
- 不要怕犯错: 编程就是在不断调试和修复错误中进步的。
- 保持耐心: Web 开发是一个系统工程,不可能一蹴而就,打好基础,循序渐进,你一定能成为一名优秀的 PHP 开发者!
