網站地址 http://www.hojay.club 新手開發 勿噴~
應學期項目之需,故開發圖片分享網站:以下是截圖展示:
首頁:
詳情頁:
我的上傳:
響應式佈局:
功能需求(Functional Requirements)
- 註冊用戶纔可以上傳文件
- 網站每天只允許上傳20張圖片(網站管理員可以指定每天不同的上傳最大數量)
- 每個用戶每天最多上傳1張圖片,圖片上傳之後不能在修改,但是可以設置圖片不顯示在網站首頁。
- 用戶每天上傳的圖片會在網站的首頁輪播顯示,排序規則爲:按照用戶上傳圖片的時間,升序排列。
- 同一個用戶,每天可以爲1張圖片點贊一次。
- 首頁顯示點贊數最多的前10張圖片,並且也會顯示今天剛上傳的圖片
界面要求(Interface requirements)
- 最基本的登錄和註冊功能
- 用戶登錄後可以查看自己上傳過的所有圖片,並且可以查看圖片的點贊數
- 首頁圖片可以按照主題類型或者分類顯示圖片
- 圖片顯示時,應該有動畫和特效
功能介紹(Features)
- 用戶註冊、登錄:提供簡介的用戶註冊頁面,用戶只需要輸入基本的賬號,密碼,生日,性別後即可註冊。用戶登錄時,除了驗證用戶名和密碼之外,還需要加入驗證碼機制(例如:隨機生成2個數字,用戶必須填寫2個數字之和)
- 用戶圖片管理:用戶登錄後,可以維護自己已經上傳的圖片。可以設置圖片是否在首頁展示,可以查看圖片的點贊數量。每天每個用戶最多上傳1張圖片。圖片上傳時,用戶可以選擇此圖片的分類,分類由系統定義,用戶只能選擇,不能添加。
- 首頁展示:這是當前網站的主要功能。頁面必須具備響應性佈局。
3.1. 點贊數量的前10張圖片會在一個分組中顯示.
3.2. 當前日期中,多個用戶上傳的圖片會按照上傳的時間先後順序依次顯示.
3.3. 按照系統提供的各個分類,圖片分組展示.
網站數據(Website data)
- 數據可以通過管理界面自行維護,數據存儲到數據庫中
- 數據不允許以靜態文本的方式使用。
移動端頁面(Mobile page)
- 可以讓頁面完全響應移動端設備的訪問
- 可以通過使用跨平臺開發工具將網站轉換爲手機APP
[項目規劃]
- 參考各大圖牀。
- 創建數據庫 – 寫html頁面(響應式佈局)
- 編寫程序前後端接口。
- ThinkPhp5.1 ORM實現數據庫增刪改查
- 實現前後端功能與接口
- 前後端交接,完成大部分開發
- bug修復以及收尾工作。-- 跨平臺工具製作app
[工具和庫]
後端框架: Thinkphp5.1
php版本: php7.3.12
mysql :mariaDB10.4.10
服務器: apache2.4.41
操作系統: windows
集成開發環境 phpstorm
CDN加速: https://www.bootcdn.cn/
前端框架:bootstrap3.4.1; jquery1.12.4 ;jquery-mobile1.4.5;
- 添加第三方類庫(驗證碼)
- 添加第三方類庫(圖像處理)
- 添加第三方類庫(Time)
- 添加第三方類庫(單元測試)
[注意點||創新點]
- 使用中間件實現登錄驗證(管理員身份與普通用戶)
- 點贊其實是個很有意思的功能,thinkphp緩存機制(普通的mysql也可以實現,但是遇到高併發性能上不是很好。目前我覺得比較好的方式是用Redis作緩存來實現,從而減輕數據庫的負擔)
- 後端實現單點登錄。
- 實現密碼公鑰私鑰加密。
- 使用第三方模板引擎(think-angular)—算了,還是用thinkphp5.1內置的叭
- 模板是可以繼承的!一定要注意不要寫重複的代碼!!提高代碼的精度
- API接口開發—貪多嚼不爛,下次再說叭,或者可以單獨開發幾個接口作爲另一個項目的應用(純接口開發就算了)
- 模板繼承還是半天沒弄明白
- 添加圖片方向調整
- 分頁功能|圖片評論功能
2020-05-08遺留問題以及規劃(畢設要求)
```*點贊```
```*視頻```
```*添加七牛雲對象存儲服務```
```*添加七牛雲CDN加速服務```
```*分頁```
*批量上傳
*個人信息
*搜索功能
*收藏
*管理員功能
*添加qq登錄接口
*評論
*歷史瀏覽
*博客------拓展
*深度學習圖片自動分類 TensorFlow (python接口實現)
2020-05-30
發現圖片上傳文件過大會導致上傳失敗問題(未解決)
解決! php.ini配置,修改最大上傳大小10M , 最大同時上傳數量100
關於管理員界面後臺數據問題
由於html文件是由JS渲染 而不是php渲染,故不能使用thinkPhp的模板渲染進行數據的填充.
解決辦法
對於管理員界面使用前端框架進行數據渲染->使用anglarJS 或者 VUE 或者其他react之類的前端框架,結合ajax
將數據從後臺取出並使用js渲染到前端。