PHP 校园助手开发记录

PHPMySQL后端开发

用原生 PHP + MySQL 从零搭建校园服务平台的实战记录——没有框架,手写每一行 SQL 和路由逻辑。

技术选型

选择原生 PHP 而非 Laravel/ThinkPHP 等框架的原因:作为第一个后端项目,希望能深入理解底层原理——HTTP 请求处理、Session 管理、数据库操作、安全防护——框架会帮你做掉很多事情,但也屏蔽了背后的机制。

核心踩坑记录

1. Session 管理

PHP 的 session_start() 必须在任何输出之前调用。曾经在 header.php 中用 include 方式引入时,没注意 BOM 头问题,导致 session 无法写入。教训:所有 PHP 文件必须保存为 UTF-8 without BOM。

登录状态验证的最佳实践:在每个需要登录的页面顶部检查 $_SESSION['user_id'],未登录则 header('Location: login.php') 跳转。

2. SQL 注入防护

最早直接用字符串拼接 SQL:"SELECT * FROM users WHERE id = $id"——这是一个严重的安全漏洞。后来全面改用 PDO 预处理语句:

$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([$id]);

PDO 的预处理语句会自动转义参数,从根源上杜绝 SQL 注入。

3. 文件上传安全

图片上传功能踩过的坑:

数据库设计心得

表名用途关键字段
users用户系统id, username, password_hash, role
courses课程信息id, name, teacher, classroom, schedule
grades成绩记录id, user_id, course_id, score, semester
posts资讯发布id, title, content, author_id, created_at

最大收获:用原生 PHP 写项目虽然效率低,但对 Web 开发的理解深度完全不同。之后再学 Laravel 框架时,能立刻明白框架帮你做了什么——路由、ORM、中间件、依赖注入——都是对底层原理的封装。

← 返回笔记列表