pyaephyoaung78/shwee-shaung-news
GitHub: pyaephyoaung78/shwee-shaung-news
一个使用 PHP 和 MySQL 构建的新闻发布与内容管理系统,提供多角色后台管理、新闻投稿、搜索分页和基本安全防护功能。
Stars: 0 | Forks: 0
# Shwee Shaung News
Shwee Shaung News 是一个使用 PHP 和 MySQL 构建的新闻网站,它是作为一个大学 PHP 课程项目开发的。
## 功能
- 用户注册和登录
- 带角色的管理员登录
- 新闻分类和子分类
- 新闻详情页
- 实时搜索和分页搜索结果
- 分页显示的最新新闻和分类新闻
- 用户新闻投稿
- 用户订阅
- 反馈表单
- 广告管理
- 表单的 CSRF token 保护
- 基础的上传文件夹 Git 规范
## 技术栈
- PHP
- MySQL
- Bootstrap
- JavaScript / jQuery
- 用于后台区域富文本编辑的 TinyMCE
## 项目结构
```
admin/ Admin dashboard and admin actions
admin/images/ Runtime news uploads, ignored by Git
admin/adsimages/ Runtime advertisement uploads, ignored by Git
bootstrap-5.3.2-dist/ Local Bootstrap assets
config/ Database connection and shared helpers
database/ Database migration/helper files
img/ Static website/team assets
css/ Extra CSS
```
## GitHub 上传说明
运行时的上传文件夹被有意忽略:
```
admin/images/*
admin/adsimages/*
```
这些文件夹通过 `.gitkeep` 文件保留,以便在克隆后项目结构依然存在。
## 设置
1. 将仓库克隆到你的 Apache web 根目录:
```
git clone shwee_shaung_news
```
2. 创建一个 MySQL 数据库:
```
CREATE DATABASE shwee_shaung_news CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
3. 导入 schema:
```
mysql -u root -p shwee_shaung_news < database/schema.sql
```
4. 可选:导入干净的演示数据:
```
mysql -u root -p shwee_shaung_news < database/demo_data.sql
```
演示凭据:
```
Admin:
role: admin
password: admin123
Editor:
role: editor
password: editor123
Reporter:
role: reporter
password: reporter123
User:
email: demo@example.com
password: password123
```
5. 如果你正在升级一个尚未包含新版 `news_images` 表的旧课程数据库,请运行:
```
mysql -u root -p shwee_shaung_news < database/create_news_images.sql
php database/migrate_news_images.php
```
6. 配置数据库凭据。
```
DB_HOST
DB_USER
DB_PASSWORD
DB_NAME
```
对于本地开发,你也可以编辑 [config/database.php](config/database.php)。
示例值展示在 [config/database.example.php](config/database.example.php) 中。
7. 在浏览器中打开该项目:
```
http://localhost/shwee_shaung_news/Home.php
```
## 演示 URL
```
Public home:
http://localhost/shwee_shaung_news/Home.php
User login:
http://localhost/shwee_shaung_news/Login.php
Admin login:
http://localhost/shwee_shaung_news/admin/admin_login.php
Search results:
http://localhost/shwee_shaung_news/SearchResults.php?keyword=news
```
## 已添加的安全改进
- CSRF token 助手和验证
- 删除操作从 GET 链接转换为 POST 表单
- 用户注册存储哈希密码
- 管理员/用户登录支持哈希密码
- 搜索使用 prepared statements
- 上传文件夹被 Git 忽略
- 管理员密码对员工表隐藏
## 推荐的后续改进
- 使用 MIME 类型和文件大小检查来改进上传验证
- 将剩余的原生 SQL 字符串替换为 prepared statements
- 添加编辑/删除确认弹窗
- 添加密码重置功能
- 为每个后台页面添加更好的基于角色的授权
- 在此 README 中添加截图
## 团队
由 Shwee Shaung News 团队作为一个大学 PHP 课程项目构建。
标签:Bootstrap, OpenVAS, PHP, RBAC权限管理, Syscall, Web开发, 内容管理系统, 数据可视化, 新闻发布系统, 自定义脚本