PHP程序開發(fā)-PHP基礎(chǔ)案例教程第16章-階段案例課件_第1頁
PHP程序開發(fā)-PHP基礎(chǔ)案例教程第16章-階段案例課件_第2頁
PHP程序開發(fā)-PHP基礎(chǔ)案例教程第16章-階段案例課件_第3頁
PHP程序開發(fā)-PHP基礎(chǔ)案例教程第16章-階段案例課件_第4頁
PHP程序開發(fā)-PHP基礎(chǔ)案例教程第16章-階段案例課件_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第16章階段案例

——趣PHP網(wǎng)站開發(fā)實戰(zhàn)類與對象的實際應(yīng)用MySQLi擴(kuò)展面向?qū)ο笳Z法第16章階段案例

——趣PHP網(wǎng)站開發(fā)實戰(zhàn)類與對象的實際應(yīng)目錄需求分析16.2案例實現(xiàn)16.316.1案例展示目錄需求分析16.2案例實現(xiàn)16.316.1案例展示16.1案例展示網(wǎng)站首頁16.1案例展示網(wǎng)站首頁16.1案例展示注冊與登錄16.1案例展示注冊與登錄16.1案例展示上傳頭像16.1案例展示上傳頭像16.1案例展示欄目管理16.1案例展示欄目管理16.1案例展示發(fā)布趣圖16.1案例展示發(fā)布趣圖16.1案例展示發(fā)布視頻、趣文16.1案例展示發(fā)布視頻、趣文16.1案例展示發(fā)表評論16.1案例展示發(fā)表評論16.2需求分析“趣PHP”是一個在線學(xué)習(xí)分享平臺,主要面向正在學(xué)習(xí)或已經(jīng)從事PHP開發(fā)的人員,在這個平臺中分享學(xué)習(xí)資料、學(xué)習(xí)心得等。用戶在網(wǎng)站中注冊一個賬號以后,就可以發(fā)表和PHP相關(guān)的趣味文字、圖片或視頻,還支持用戶頭像上傳、發(fā)表評論等功能。關(guān)于本項目的具體需求如下。16.2需求分析“趣PHP”是一個在線學(xué)習(xí)分享平臺,主要面16.2需求分析配置一個虛擬主機(jī)“”用于測試和運(yùn)行項目使用MySQL數(shù)據(jù)庫來保存項目中的基本數(shù)據(jù)網(wǎng)站管理員能夠?qū)谀窟M(jìn)行配置,可以設(shè)置欄目名稱、顯示順序和圖片支持用戶登錄、注冊和頭像上傳功能,在登錄時支持記住登錄狀態(tài)為了避免惡意登錄和注冊,使用驗證碼進(jìn)行保護(hù)在內(nèi)容發(fā)布時,支持文字、圖片和視頻3種類型,并可以選擇所屬的欄目16.2需求分析配置一個虛擬主機(jī)“”16.2需求分析在瀏覽用戶發(fā)表的內(nèi)容時,可以進(jìn)行回復(fù)管理員或內(nèi)容的作者可以對內(nèi)容進(jìn)行編輯和刪除操作管理員或評論的作者可以對評論進(jìn)行刪除操作支持按照發(fā)布時間、類型或評論數(shù)量對顯示的內(nèi)容進(jìn)行排序支持按照所屬欄目或作者對內(nèi)容列表進(jìn)行篩選16.2需求分析在瀏覽用戶發(fā)表的內(nèi)容時,可以進(jìn)行回復(fù)16.3案例實現(xiàn)準(zhǔn)備工作①準(zhǔn)備項目運(yùn)行的環(huán)境創(chuàng)建虛擬主機(jī)②合理的管理項目文件目錄結(jié)構(gòu)劃分③準(zhǔn)備公共函數(shù)和配置文件config()、input()等④引入公共文件在初始化文件init.php中實現(xiàn)相關(guān)文件的引入和環(huán)境配置⑤配置網(wǎng)頁標(biāo)題和頂部導(dǎo)航在配置文件中,完成網(wǎng)頁標(biāo)題和頂部導(dǎo)航的管理16.3案例實現(xiàn)準(zhǔn)備工作①準(zhǔn)備項目運(yùn)行的環(huán)境創(chuàng)建虛擬主機(jī)16.3案例實現(xiàn)準(zhǔn)備工作——目錄結(jié)構(gòu)劃分類型文件名稱作用目錄common保存公共的PHP文件common\library保存公共的類文件css保存項目的CSS文件js保存項目的JavaScript文件images保存項目的圖片文件view保存項目的HTML文件uploads\avatar保存用戶上傳的頭像uploads\category保存管理員上傳的欄目圖片uploads\picture保存用戶上傳的圖片內(nèi)容uploads\temp保存用戶上傳的臨時文件16.3案例實現(xiàn)準(zhǔn)備工作——目錄結(jié)構(gòu)劃分類型文件名稱作用目16.3案例實現(xiàn)準(zhǔn)備工作——目錄結(jié)構(gòu)劃分類型文件名稱作用文件index.php網(wǎng)站首頁,顯示內(nèi)容列表login.php用戶登錄、退出register.php注冊新用戶captcha.php生成驗證碼,輸出驗證碼圖像user.php用戶中心,可以上傳頭像category.php欄目編輯,只有管理員可以進(jìn)行操作post.php發(fā)布內(nèi)容,只有已登錄用戶可以進(jìn)行操作show.php查看內(nèi)容,已登錄用戶可以發(fā)表評論16.3案例實現(xiàn)準(zhǔn)備工作——目錄結(jié)構(gòu)劃分類型文件名稱作用文16.3案例實現(xiàn)準(zhǔn)備工作——準(zhǔn)備公共函數(shù)和配置文件將之前在第9章、第13章的項目代碼中已經(jīng)寫好的config()、input()、thumb()、page_html()、page_sql()函數(shù)復(fù)制到本項目的common\function.php文件中,這些函數(shù)在開發(fā)中會經(jīng)常用到。16.3案例實現(xiàn)準(zhǔn)備工作——準(zhǔn)備公共函數(shù)和配置文件將之前在16.3案例實現(xiàn)準(zhǔn)備工作——準(zhǔn)備公共函數(shù)和配置文件在common目錄中創(chuàng)建項目的配置文件config.php返回關(guān)聯(lián)數(shù)組,用于保存數(shù)據(jù)庫連接信息、字符集、數(shù)據(jù)表前綴形如:['DB_CONNECT'=>[],'DB_CHARSET'=>'utf8',]16.3案例實現(xiàn)準(zhǔn)備工作——準(zhǔn)備公共函數(shù)和配置文件在com16.3案例實現(xiàn)數(shù)據(jù)庫操作類利用單例模式實現(xiàn)MySQLi擴(kuò)展的Db類封裝在Db類封裝常用方法執(zhí)行SQL語句,支持預(yù)處理方式和二維數(shù)組的批量執(zhí)行自動添加表前綴,為了便于管理和修改返回執(zhí)行結(jié)果,查詢所有結(jié)果和一行結(jié)果,返回最后插入的id或受影響行數(shù)封裝SELECT查詢,返回所有查詢結(jié)果,結(jié)果中的第一行或某個字段的值封裝INSERT語句,實現(xiàn)自動插入數(shù)據(jù)封裝UPDATE和DELETE語句16.3案例實現(xiàn)數(shù)據(jù)庫操作類利用單例模式實現(xiàn)MySQLi擴(kuò)16.3案例實現(xiàn)文件上傳類創(chuàng)建上傳類文件,并可指定文件的保存目錄、自動創(chuàng)建的子目錄、允許上傳的文件名以及上傳文件數(shù)量限制。解析文件上傳數(shù)組,將“$_FILES[‘xx’]”數(shù)組整理成一維數(shù)組的形式返回。如果文件存在錯誤,則記錄錯誤信息并跳過。實現(xiàn)單文件和多文件上傳保存上傳文件16.3案例實現(xiàn)文件上傳類創(chuàng)建上傳類文件,并可指定文件的保16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT用戶idgroupENUM('admin','user')DEFAULT'user'NOTNULL用戶組nameVARCHAR(10)UNIQUEDEFAULT''NOTNULL用戶名emailVARCHAR(32)DEFAULT''NOTNULL電子郵箱passwordCHAR(32)DEFAULT''NOTNULL密碼saltCHAR(6)DEFAULT''NOTNULL密鑰avatarVARCHAR(255)DEFAULT''NOTNULL頭像地址timeINTUNSIGNEDDEFAULT0NOTNULL注冊時間16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表字段數(shù)據(jù)類型說16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表在設(shè)計用戶表時,需要重點關(guān)注password和salt字段從安全角度考慮,通常不建議將用戶密碼明文存儲到數(shù)據(jù)庫中,以避免數(shù)據(jù)泄露因此,這里的password和salt字段只用于存儲密碼加密后的信息16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表在設(shè)計用戶表時16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表關(guān)于密碼加密的方式有很多,其中MD5是一種非常普遍的方式。由于MD5算法的不可逆性,通過計算后的結(jié)果將無法還原出計算前的內(nèi)容。對于完全相同的內(nèi)容,計算后的結(jié)果也是相同,因此MD5算法可用于密碼存儲16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表關(guān)于密碼加密的16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表MD5密碼加密存儲的缺點若將世界上所有的密碼與計算結(jié)果全部存儲起來,進(jìn)行檢索,則密碼就會被逆向查找出來。為此,通常會為每個用戶生成一個salt密鑰,用于在對密碼進(jìn)行MD5計算時加入salt(佐料),增加破解難度。16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表MD5密碼加密16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表下面的代碼演示了基于MD5與salt的密碼加密方式。$salt=substr(uniqid(),-6); //生成6位密鑰$password=md5(md5('密碼').$salt); //加密密碼uniqid()函數(shù)用于根據(jù)當(dāng)前微秒時間生成不重復(fù)的字符串。生成后,使用substr()函數(shù)截取出了后6位字符,作為salt字段。在對密碼進(jìn)行第1次md5()運(yùn)算后,拼接salt進(jìn)行第2次md5()運(yùn)算,形成了用于保存到數(shù)據(jù)庫中的password字段結(jié)果。16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表下面的代碼演示16.3案例實現(xiàn)用戶登錄與退出——實現(xiàn)用戶登錄顯示登錄頁面,創(chuàng)建login.php文件,引入login.html用戶登錄表單接收表單,考慮到程序的安全性和嚴(yán)謹(jǐn)性,在公共函數(shù)文件function.php中編寫用于驗證用戶名和密碼格式的函數(shù)。繼續(xù)編寫login.php,利用if判斷用戶是否提交,在載入HTML模板之前,先接收表單并進(jìn)行處理。友好提示登錄失敗信息,將載入HTML模板的代碼封裝到display()函數(shù)繼續(xù)編寫login.php,判斷表單提交的用戶名和密碼是否正確16.3案例實現(xiàn)用戶登錄與退出——實現(xiàn)用戶登錄顯示登錄頁面16.3案例實現(xiàn)用戶登錄與退出——獲取登錄信息在項目初始化文件init.php中檢查用戶是否登錄,若登錄則將Session的中用戶信息保存到函數(shù)user()中編寫user()函數(shù),其第2個參數(shù)不為空時,將信息保存到靜態(tài)變量$data中,否則表示根據(jù)第1個參數(shù)獲取用戶信息編寫view\common\top.html文件,在未登錄狀態(tài)下顯示“登錄”和“注冊”鏈接;在已登錄狀態(tài)下顯示當(dāng)前登錄的用戶名,并提供“退出”鏈接。16.3案例實現(xiàn)用戶登錄與退出——獲取登錄信息在項目初始化16.3案例實現(xiàn)用戶登錄與退出——用戶退出打開view\common\top.html文件,修改用戶登錄后顯示的“退出”鏈接,并在URL參數(shù)傳遞action=logout標(biāo)識用戶退出在login.php中接收action參數(shù),如果值為logout,表示用戶需要退出,清除Session中保存的用戶信息即可。16.3案例實現(xiàn)用戶登錄與退出——用戶退出打開view\c16.3案例實現(xiàn)驗證碼思考:用戶登錄時,除了瀏覽器還有誰可以向服務(wù)器提交數(shù)據(jù)?會有什么影響?答案:其他軟件,從系統(tǒng)安全角度看,如果軟件自動大批量向服務(wù)器提交表單,那么網(wǎng)站管理員的密碼將會被窮舉,導(dǎo)致管理員賬號被盜取。解決辦法:驗證碼是一種防御手段16.3案例實現(xiàn)驗證碼思考:用戶登錄時,除了瀏覽器還有誰可16.3案例實現(xiàn)驗證碼通常驗證碼是一張帶有文字的圖片,要求用戶輸入圖片中的文字對于圖片中的文字,人類識別非常容易,而軟件識別則非常困難因此,驗證碼是一種區(qū)分由人類還是由計算機(jī)操作的程序16.3案例實現(xiàn)驗證碼通常驗證碼是一張帶有文字的圖片,要求16.3案例實現(xiàn)驗證碼生成驗證碼文本,創(chuàng)建驗證碼類編寫一個create()方法用于驗證碼文本的生成生成驗證碼圖像,編寫show()方法,實現(xiàn)根據(jù)指定文本輸出驗證碼圖像創(chuàng)建captcha.php文件,實現(xiàn)驗證碼圖像的輸出在function.php中編寫captcha_save()函數(shù)將驗證碼保存到Session中在function.php中編寫captcha_check()函數(shù)用于驗證碼的驗證16.3案例實現(xiàn)驗證碼生成驗證碼文本,創(chuàng)建驗證碼類編寫一個16.3案例實現(xiàn)用戶注冊編寫view\register.html文件,創(chuàng)建一個用戶注冊表單創(chuàng)建register.php顯示用戶注冊頁面在顯示用戶注冊頁面之前,添加代碼,實現(xiàn)表單的接收、驗證和處理在驗證成功后,調(diào)用register()函數(shù)實現(xiàn)新用戶的注冊注冊成功,將用戶信息保存到Session,然后跳轉(zhuǎn)到首頁16.3案例實現(xiàn)用戶注冊編寫view\register.h16.3案例實現(xiàn)記錄登錄狀態(tài)為增強(qiáng)用戶體驗,大部分網(wǎng)站在用戶登錄的表單中提供“下次自動登錄”或“記住登錄狀態(tài)”的復(fù)選框,當(dāng)用戶選中后進(jìn)行登錄,服務(wù)器就會利用Cookie保存用戶的登錄信息。在保存后,如果Session已經(jīng)過期,則可以利用Cookie進(jìn)行登錄。16.3案例實現(xiàn)記錄登錄狀態(tài)為增強(qiáng)用戶體驗,大部分網(wǎng)站在用16.3案例實現(xiàn)記錄登錄狀態(tài)在view\login.html中增加一個“記住登錄狀態(tài)”的復(fù)選框在common\config.php中添加Ccookie的的密鑰和默認(rèn)有效期,用于提高安全性在處理登錄表單的密碼驗證成功后,調(diào)用login_success()函數(shù)之前,處理用戶是否選中“記住登錄狀態(tài)”復(fù)選框在function.php中編寫autologin_cookie()函數(shù)用于將數(shù)據(jù)庫中已經(jīng)保存的密碼再次進(jìn)行加密,用于限制Cookie密碼的有效時間16.3案例實現(xiàn)記錄登錄狀態(tài)在view\login.htm16.3案例實現(xiàn)記錄登錄狀態(tài)編寫autologin_check()函數(shù)驗證Cookie密碼的有效性編寫login.php,判斷當(dāng)前用戶是否已經(jīng)在Cookie中保存了登錄狀態(tài)當(dāng)用戶保存了登錄狀態(tài)時,在view\login.html中顯示已保存的用戶信息用戶保存登錄狀態(tài),也需要在表單中輸入驗證碼才能進(jìn)行登錄16.3案例實現(xiàn)記錄登錄狀態(tài)編寫autologin_che16.3案例實現(xiàn)記錄登錄狀態(tài)另外,“記住登錄狀態(tài)”功能通常是提供給在登錄狀態(tài)下直接關(guān)閉瀏覽器的用戶,而若用戶單擊了網(wǎng)頁中的“退出”鏈接,則表示用戶需要完全退出。因此,下面修改login.php中實現(xiàn)用戶退出的代碼,在清除Session中的用戶信息后,再清除Cookie中保存的登錄信息16.3案例實現(xiàn)記錄登錄狀態(tài)另外,“記住登錄狀態(tài)”功能通常16.3案例實現(xiàn)記錄登錄狀態(tài)直接退出瀏覽器再次點擊登錄16.3案例實現(xiàn)記錄登錄狀態(tài)直接退出瀏覽器16.3案例實現(xiàn)用戶頭像上傳在網(wǎng)頁頂部顯示的用戶名,進(jìn)入個人中心,設(shè)置頭像編寫user.php,實現(xiàn)在用戶登錄的情況下顯示上傳頭像的頁面user.html在user.html中,若用戶頭像不為空時,顯示“./uploads/avatar/”中保存的用戶頭像,否則顯示默認(rèn)頭像“./images/noavatar.gif”繼續(xù)編寫user.php,實現(xiàn)接收用戶上傳頭像的表單,并在input()函數(shù)中增加對$_FILES數(shù)組的支持編寫user_avatar_upload()函數(shù)用于實現(xiàn)頭像文件上傳16.3案例實現(xiàn)用戶頭像上傳在網(wǎng)頁頂部顯示的用戶名,進(jìn)入個16.3案例實現(xiàn)用戶頭像上傳16.3案例實現(xiàn)用戶頭像上傳16.3案例實現(xiàn)欄目管理——設(shè)計欄目表在本項目中,欄目是對內(nèi)容的分類,用戶在發(fā)布內(nèi)容時可以選擇其所屬的欄目。由于欄目會在網(wǎng)頁的右側(cè)邊欄顯示,為了顯示效果,網(wǎng)站管理員可以為欄目設(shè)置顯示圖片。16.3案例實現(xiàn)欄目管理——設(shè)計欄目表在本項目中,欄目是對16.3案例實現(xiàn)欄目管理——設(shè)計欄目表字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT欄目idnameVARCHAR(12)DEFAULT''NOTNULL欄目名稱coverVARCHAR(255)DEFAULT''NOTNULL圖片地址sortINTDEFAULT0NOTNULL顯示順序sort字段表示欄目的排序值,數(shù)值小的排在前面,數(shù)值大的排在后面。INSERTINTO`fun_category`(`id`,`name`,`sort`)VALUES(1,'ThinkPHP',0),(2,'Bootstrap',1),(3,'Laravel',2),(4,'小道消息',3),(5,'嘿科技',4),(6,'趣快報',5),(7,'歪果趣聞',6),(9,'神吐槽',7),(8,'漲姿勢',8);16.3案例實現(xiàn)欄目管理——設(shè)計欄目表字段數(shù)據(jù)類型說明id16.3案例實現(xiàn)欄目管理——欄目數(shù)據(jù)的讀取和顯示將獲取欄目數(shù)據(jù)的內(nèi)容封裝到function.php文件中的category_list()函數(shù)中編寫欄目編輯頁category.php文件,引入欄目管理頁面在側(cè)邊欄中按照是否含有封面圖展示欄目信息在欄目管理頁面中實現(xiàn),批量添加和刪除欄目、為欄目設(shè)置封面圖等功能在category.php中接收表單,并分別調(diào)用對應(yīng)函數(shù)完成相應(yīng)的處理16.3案例實現(xiàn)欄目管理——欄目數(shù)據(jù)的讀取和顯示將獲取欄目16.3案例實現(xiàn)欄目管理——欄目數(shù)據(jù)的讀取和顯示16.3案例實現(xiàn)欄目管理——欄目數(shù)據(jù)的讀取和顯示16.3案例實現(xiàn)欄目管理——欄目添加編寫category_add()函數(shù)實現(xiàn)欄目的添加調(diào)用category_cover_upload()函數(shù)處理欄目的上傳圖片封面搜集欄目表單數(shù)據(jù),進(jìn)行過濾后保存到數(shù)據(jù)庫中在配置文件中指定,允許上傳的圖片類型16.3案例實現(xiàn)欄目管理——欄目添加編寫category_16.3案例實現(xiàn)欄目管理——欄目修改編寫category_save()函數(shù)實現(xiàn)欄目的修改,包括欄目記錄的修改;刪除欄目圖片;上傳圖片以及將欄目圖片修改結(jié)果保存到數(shù)據(jù)庫中編寫category_cover_delete()函數(shù)實現(xiàn)欄目圖片的刪除16.3案例實現(xiàn)欄目管理——欄目修改編寫category_16.3案例實現(xiàn)欄目管理——欄目刪除編寫category_delete()函數(shù)實現(xiàn)欄目的刪除接收表單提交的del數(shù)組,該數(shù)組中的每個元素是待刪除的欄目id。先刪除欄目圖片再刪除欄目記錄將被刪除欄目下POST表中的記錄更改為空欄目16.3案例實現(xiàn)欄目管理——欄目刪除編寫category_16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——設(shè)計數(shù)據(jù)表字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT內(nèi)容idcidINTUNSIGNEDDEFAULT0NOTNULL欄目iduidINTUNSIGNEDDEFAULT0NOTNULL用戶idtypeENUM('pic','text','video')DEFAULT'text'NOTNULL內(nèi)容類型contentTEXTNOTNULLCOMMENT內(nèi)容文本timeINTUNSIGNEDDEFAULT0NOTNULL發(fā)布時間hitsINTUNSIGNEDDEFAULT0NOTNULL閱讀量replyINTUNSIGNEDDEFAULT0NOTNULL回復(fù)量字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT附件idpidINTUNSIGNEDDEFAULT0NOTNULL內(nèi)容idcontentVARCHAR(255)DEFAULT''NOTNULL附件內(nèi)容post表attachment表16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——設(shè)計數(shù)據(jù)表字段數(shù)據(jù)類型說16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——內(nèi)容發(fā)布打開view\common\slide.html文件,在側(cè)邊欄中提供內(nèi)容發(fā)布按鈕編寫post.php文件有兩個功能,根據(jù)URL參數(shù)判定執(zhí)行添加操作還是修改操作根據(jù)限制URL參數(shù)type的值顯示對應(yīng)的發(fā)布頁面,并且限制內(nèi)容類型只能是pic、text或video中的一種,否則自動修改為text16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——內(nèi)容發(fā)布打開view\c16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——創(chuàng)建表單輸出欄目下拉菜單,用戶可以通過這個菜單選擇當(dāng)前發(fā)布內(nèi)容的所屬欄目根據(jù)發(fā)布類型,提供不同的輸入框發(fā)布視頻時確保頁面中輸出的是一個空白的視頻鏈接輸入框若編輯內(nèi)容已有上傳圖片則輸出,并提供“刪除”復(fù)選框來刪除該圖片在配置文件中設(shè)置每個內(nèi)容允許的附件最大數(shù)量在表單中增加隱藏域,告知頁面中的JavaScript程序當(dāng)前允許的附件最大數(shù)量值,一旦當(dāng)前圖片或視頻的輸入框達(dá)到限制值,將不能繼續(xù)添加16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——創(chuàng)建表單輸出欄目下拉菜單16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——接收表單在post.php中接收用戶提交的表單,實現(xiàn)數(shù)據(jù)的添加與修改獲取表單數(shù)據(jù)在更新記錄前先驗證權(quán)限,若無權(quán)限則給出提示信息若是添加記錄的操作,則直接執(zhí)行對應(yīng)的操作16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——接收表單在post.ph16.3案例實現(xiàn)處理圖片和視頻修改內(nèi)容時刪除關(guān)聯(lián)的圖片或視頻,根據(jù)查詢出的記錄先刪除圖片文件,再刪除數(shù)據(jù)庫中的記錄;對于視頻則直接將刪除原理的所有記錄,然后再重新添加接收圖片或視頻,根據(jù)內(nèi)容類型接收數(shù)據(jù)并將其保存到數(shù)據(jù)中返回驗證視頻地址,在配置文件中添加允許上傳的視頻域名,并在input_check()函數(shù)中增加對于視頻URL的驗證16.3案例實現(xiàn)處理圖片和視頻修改內(nèi)容時刪除關(guān)聯(lián)的圖片或視16.3案例實現(xiàn)內(nèi)容查看根據(jù)指定id獲取查看的內(nèi)容輸出查詢到的記錄到HTML頁面中編輯和刪除的鏈接只有當(dāng)前登錄用戶為網(wǎng)站管理員和內(nèi)容作者時輸出16.3案例實現(xiàn)內(nèi)容查看根據(jù)指定id獲取查看的內(nèi)容16.3案例實現(xiàn)內(nèi)容刪除通過鏈接刪除指定的內(nèi)容,前提是要有刪除的權(quán)限解決內(nèi)容刪除時存在的CSRF問題,如當(dāng)管理員在已登錄狀態(tài)下進(jìn)行其他操作時,若訪問了其他用戶惡意構(gòu)造的URL地址,就會導(dǎo)致一些危險的操作被執(zhí)行,這個問題被稱為CSRF(跨域請求偽造)16.3案例實現(xiàn)內(nèi)容刪除通過鏈接刪除指定的內(nèi)容,前提是要有16.3案例實現(xiàn)內(nèi)容刪除防御CSRF的一個有效措施,就是為所有涉及更改數(shù)據(jù)的操作加上令牌保護(hù),該令牌將在用戶登錄時隨機(jī)生成,每個更改的操作都需要附加上令牌,如果沒有令牌時將無法執(zhí)行操作。16.3案例實現(xiàn)內(nèi)容刪除防御CSRF的一個有效措施,就是為16.3案例實現(xiàn)內(nèi)容列表編寫index.php實現(xiàn)根據(jù)URL參數(shù)查詢內(nèi)容列表在view\index.html文件中輸出查詢到的記錄16.3案例實現(xiàn)內(nèi)容列表編寫index.php實現(xiàn)根據(jù)UR16.3案例實現(xiàn)內(nèi)容回復(fù)字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT回復(fù)idpidINTUNSIGNEDDEFAULT0NOTNULL內(nèi)容iduidINTUNSIGNEDDEFAULT0NOTNULL用戶idcontentVARCHAR(255)DEFAULT''NOTNULL回復(fù)內(nèi)容timeINTUNSIGNEDDEFAULT0NOTNULL回復(fù)時間設(shè)計回復(fù)數(shù)據(jù)表16.3案例實現(xiàn)內(nèi)容回復(fù)字段數(shù)據(jù)類型說明idINTUNS16.3案例實現(xiàn)內(nèi)容回復(fù)發(fā)表回復(fù),在view\show.html中添加發(fā)表評論的表單,在show.php中處理表單查看回復(fù),當(dāng)內(nèi)容查看頁面中有了回復(fù)之后,將回復(fù)查詢出來,并提供分頁顯示的功能,在view\show.html中輸出回復(fù)列表刪除回復(fù),在view\show.html文件中輸出回復(fù)后,為每個回復(fù)內(nèi)容增加一個刪除鏈接,用于管理員或發(fā)表回復(fù)的用戶刪除回復(fù)。16.3案例實現(xiàn)內(nèi)容回復(fù)發(fā)表回復(fù),在view\show.h16.3案例實現(xiàn)內(nèi)容回復(fù)發(fā)表評論評論列表16.3案例實現(xiàn)內(nèi)容回復(fù)發(fā)表評論評論列表PHP程序開發(fā)-PHP基礎(chǔ)案例教程第16章-階段案例課件第16章階段案例

——趣PHP網(wǎng)站開發(fā)實戰(zhàn)類與對象的實際應(yīng)用MySQLi擴(kuò)展面向?qū)ο笳Z法第16章階段案例

——趣PHP網(wǎng)站開發(fā)實戰(zhàn)類與對象的實際應(yīng)目錄需求分析16.2案例實現(xiàn)16.316.1案例展示目錄需求分析16.2案例實現(xiàn)16.316.1案例展示16.1案例展示網(wǎng)站首頁16.1案例展示網(wǎng)站首頁16.1案例展示注冊與登錄16.1案例展示注冊與登錄16.1案例展示上傳頭像16.1案例展示上傳頭像16.1案例展示欄目管理16.1案例展示欄目管理16.1案例展示發(fā)布趣圖16.1案例展示發(fā)布趣圖16.1案例展示發(fā)布視頻、趣文16.1案例展示發(fā)布視頻、趣文16.1案例展示發(fā)表評論16.1案例展示發(fā)表評論16.2需求分析“趣PHP”是一個在線學(xué)習(xí)分享平臺,主要面向正在學(xué)習(xí)或已經(jīng)從事PHP開發(fā)的人員,在這個平臺中分享學(xué)習(xí)資料、學(xué)習(xí)心得等。用戶在網(wǎng)站中注冊一個賬號以后,就可以發(fā)表和PHP相關(guān)的趣味文字、圖片或視頻,還支持用戶頭像上傳、發(fā)表評論等功能。關(guān)于本項目的具體需求如下。16.2需求分析“趣PHP”是一個在線學(xué)習(xí)分享平臺,主要面16.2需求分析配置一個虛擬主機(jī)“”用于測試和運(yùn)行項目使用MySQL數(shù)據(jù)庫來保存項目中的基本數(shù)據(jù)網(wǎng)站管理員能夠?qū)谀窟M(jìn)行配置,可以設(shè)置欄目名稱、顯示順序和圖片支持用戶登錄、注冊和頭像上傳功能,在登錄時支持記住登錄狀態(tài)為了避免惡意登錄和注冊,使用驗證碼進(jìn)行保護(hù)在內(nèi)容發(fā)布時,支持文字、圖片和視頻3種類型,并可以選擇所屬的欄目16.2需求分析配置一個虛擬主機(jī)“”16.2需求分析在瀏覽用戶發(fā)表的內(nèi)容時,可以進(jìn)行回復(fù)管理員或內(nèi)容的作者可以對內(nèi)容進(jìn)行編輯和刪除操作管理員或評論的作者可以對評論進(jìn)行刪除操作支持按照發(fā)布時間、類型或評論數(shù)量對顯示的內(nèi)容進(jìn)行排序支持按照所屬欄目或作者對內(nèi)容列表進(jìn)行篩選16.2需求分析在瀏覽用戶發(fā)表的內(nèi)容時,可以進(jìn)行回復(fù)16.3案例實現(xiàn)準(zhǔn)備工作①準(zhǔn)備項目運(yùn)行的環(huán)境創(chuàng)建虛擬主機(jī)②合理的管理項目文件目錄結(jié)構(gòu)劃分③準(zhǔn)備公共函數(shù)和配置文件config()、input()等④引入公共文件在初始化文件init.php中實現(xiàn)相關(guān)文件的引入和環(huán)境配置⑤配置網(wǎng)頁標(biāo)題和頂部導(dǎo)航在配置文件中,完成網(wǎng)頁標(biāo)題和頂部導(dǎo)航的管理16.3案例實現(xiàn)準(zhǔn)備工作①準(zhǔn)備項目運(yùn)行的環(huán)境創(chuàng)建虛擬主機(jī)16.3案例實現(xiàn)準(zhǔn)備工作——目錄結(jié)構(gòu)劃分類型文件名稱作用目錄common保存公共的PHP文件common\library保存公共的類文件css保存項目的CSS文件js保存項目的JavaScript文件images保存項目的圖片文件view保存項目的HTML文件uploads\avatar保存用戶上傳的頭像uploads\category保存管理員上傳的欄目圖片uploads\picture保存用戶上傳的圖片內(nèi)容uploads\temp保存用戶上傳的臨時文件16.3案例實現(xiàn)準(zhǔn)備工作——目錄結(jié)構(gòu)劃分類型文件名稱作用目16.3案例實現(xiàn)準(zhǔn)備工作——目錄結(jié)構(gòu)劃分類型文件名稱作用文件index.php網(wǎng)站首頁,顯示內(nèi)容列表login.php用戶登錄、退出register.php注冊新用戶captcha.php生成驗證碼,輸出驗證碼圖像user.php用戶中心,可以上傳頭像category.php欄目編輯,只有管理員可以進(jìn)行操作post.php發(fā)布內(nèi)容,只有已登錄用戶可以進(jìn)行操作show.php查看內(nèi)容,已登錄用戶可以發(fā)表評論16.3案例實現(xiàn)準(zhǔn)備工作——目錄結(jié)構(gòu)劃分類型文件名稱作用文16.3案例實現(xiàn)準(zhǔn)備工作——準(zhǔn)備公共函數(shù)和配置文件將之前在第9章、第13章的項目代碼中已經(jīng)寫好的config()、input()、thumb()、page_html()、page_sql()函數(shù)復(fù)制到本項目的common\function.php文件中,這些函數(shù)在開發(fā)中會經(jīng)常用到。16.3案例實現(xiàn)準(zhǔn)備工作——準(zhǔn)備公共函數(shù)和配置文件將之前在16.3案例實現(xiàn)準(zhǔn)備工作——準(zhǔn)備公共函數(shù)和配置文件在common目錄中創(chuàng)建項目的配置文件config.php返回關(guān)聯(lián)數(shù)組,用于保存數(shù)據(jù)庫連接信息、字符集、數(shù)據(jù)表前綴形如:['DB_CONNECT'=>[],'DB_CHARSET'=>'utf8',]16.3案例實現(xiàn)準(zhǔn)備工作——準(zhǔn)備公共函數(shù)和配置文件在com16.3案例實現(xiàn)數(shù)據(jù)庫操作類利用單例模式實現(xiàn)MySQLi擴(kuò)展的Db類封裝在Db類封裝常用方法執(zhí)行SQL語句,支持預(yù)處理方式和二維數(shù)組的批量執(zhí)行自動添加表前綴,為了便于管理和修改返回執(zhí)行結(jié)果,查詢所有結(jié)果和一行結(jié)果,返回最后插入的id或受影響行數(shù)封裝SELECT查詢,返回所有查詢結(jié)果,結(jié)果中的第一行或某個字段的值封裝INSERT語句,實現(xiàn)自動插入數(shù)據(jù)封裝UPDATE和DELETE語句16.3案例實現(xiàn)數(shù)據(jù)庫操作類利用單例模式實現(xiàn)MySQLi擴(kuò)16.3案例實現(xiàn)文件上傳類創(chuàng)建上傳類文件,并可指定文件的保存目錄、自動創(chuàng)建的子目錄、允許上傳的文件名以及上傳文件數(shù)量限制。解析文件上傳數(shù)組,將“$_FILES[‘xx’]”數(shù)組整理成一維數(shù)組的形式返回。如果文件存在錯誤,則記錄錯誤信息并跳過。實現(xiàn)單文件和多文件上傳保存上傳文件16.3案例實現(xiàn)文件上傳類創(chuàng)建上傳類文件,并可指定文件的保16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT用戶idgroupENUM('admin','user')DEFAULT'user'NOTNULL用戶組nameVARCHAR(10)UNIQUEDEFAULT''NOTNULL用戶名emailVARCHAR(32)DEFAULT''NOTNULL電子郵箱passwordCHAR(32)DEFAULT''NOTNULL密碼saltCHAR(6)DEFAULT''NOTNULL密鑰avatarVARCHAR(255)DEFAULT''NOTNULL頭像地址timeINTUNSIGNEDDEFAULT0NOTNULL注冊時間16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表字段數(shù)據(jù)類型說16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表在設(shè)計用戶表時,需要重點關(guān)注password和salt字段從安全角度考慮,通常不建議將用戶密碼明文存儲到數(shù)據(jù)庫中,以避免數(shù)據(jù)泄露因此,這里的password和salt字段只用于存儲密碼加密后的信息16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表在設(shè)計用戶表時16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表關(guān)于密碼加密的方式有很多,其中MD5是一種非常普遍的方式。由于MD5算法的不可逆性,通過計算后的結(jié)果將無法還原出計算前的內(nèi)容。對于完全相同的內(nèi)容,計算后的結(jié)果也是相同,因此MD5算法可用于密碼存儲16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表關(guān)于密碼加密的16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表MD5密碼加密存儲的缺點若將世界上所有的密碼與計算結(jié)果全部存儲起來,進(jìn)行檢索,則密碼就會被逆向查找出來。為此,通常會為每個用戶生成一個salt密鑰,用于在對密碼進(jìn)行MD5計算時加入salt(佐料),增加破解難度。16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表MD5密碼加密16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表下面的代碼演示了基于MD5與salt的密碼加密方式。$salt=substr(uniqid(),-6); //生成6位密鑰$password=md5(md5('密碼').$salt); //加密密碼uniqid()函數(shù)用于根據(jù)當(dāng)前微秒時間生成不重復(fù)的字符串。生成后,使用substr()函數(shù)截取出了后6位字符,作為salt字段。在對密碼進(jìn)行第1次md5()運(yùn)算后,拼接salt進(jìn)行第2次md5()運(yùn)算,形成了用于保存到數(shù)據(jù)庫中的password字段結(jié)果。16.3案例實現(xiàn)用戶登錄與退出——設(shè)計用戶表下面的代碼演示16.3案例實現(xiàn)用戶登錄與退出——實現(xiàn)用戶登錄顯示登錄頁面,創(chuàng)建login.php文件,引入login.html用戶登錄表單接收表單,考慮到程序的安全性和嚴(yán)謹(jǐn)性,在公共函數(shù)文件function.php中編寫用于驗證用戶名和密碼格式的函數(shù)。繼續(xù)編寫login.php,利用if判斷用戶是否提交,在載入HTML模板之前,先接收表單并進(jìn)行處理。友好提示登錄失敗信息,將載入HTML模板的代碼封裝到display()函數(shù)繼續(xù)編寫login.php,判斷表單提交的用戶名和密碼是否正確16.3案例實現(xiàn)用戶登錄與退出——實現(xiàn)用戶登錄顯示登錄頁面16.3案例實現(xiàn)用戶登錄與退出——獲取登錄信息在項目初始化文件init.php中檢查用戶是否登錄,若登錄則將Session的中用戶信息保存到函數(shù)user()中編寫user()函數(shù),其第2個參數(shù)不為空時,將信息保存到靜態(tài)變量$data中,否則表示根據(jù)第1個參數(shù)獲取用戶信息編寫view\common\top.html文件,在未登錄狀態(tài)下顯示“登錄”和“注冊”鏈接;在已登錄狀態(tài)下顯示當(dāng)前登錄的用戶名,并提供“退出”鏈接。16.3案例實現(xiàn)用戶登錄與退出——獲取登錄信息在項目初始化16.3案例實現(xiàn)用戶登錄與退出——用戶退出打開view\common\top.html文件,修改用戶登錄后顯示的“退出”鏈接,并在URL參數(shù)傳遞action=logout標(biāo)識用戶退出在login.php中接收action參數(shù),如果值為logout,表示用戶需要退出,清除Session中保存的用戶信息即可。16.3案例實現(xiàn)用戶登錄與退出——用戶退出打開view\c16.3案例實現(xiàn)驗證碼思考:用戶登錄時,除了瀏覽器還有誰可以向服務(wù)器提交數(shù)據(jù)?會有什么影響?答案:其他軟件,從系統(tǒng)安全角度看,如果軟件自動大批量向服務(wù)器提交表單,那么網(wǎng)站管理員的密碼將會被窮舉,導(dǎo)致管理員賬號被盜取。解決辦法:驗證碼是一種防御手段16.3案例實現(xiàn)驗證碼思考:用戶登錄時,除了瀏覽器還有誰可16.3案例實現(xiàn)驗證碼通常驗證碼是一張帶有文字的圖片,要求用戶輸入圖片中的文字對于圖片中的文字,人類識別非常容易,而軟件識別則非常困難因此,驗證碼是一種區(qū)分由人類還是由計算機(jī)操作的程序16.3案例實現(xiàn)驗證碼通常驗證碼是一張帶有文字的圖片,要求16.3案例實現(xiàn)驗證碼生成驗證碼文本,創(chuàng)建驗證碼類編寫一個create()方法用于驗證碼文本的生成生成驗證碼圖像,編寫show()方法,實現(xiàn)根據(jù)指定文本輸出驗證碼圖像創(chuàng)建captcha.php文件,實現(xiàn)驗證碼圖像的輸出在function.php中編寫captcha_save()函數(shù)將驗證碼保存到Session中在function.php中編寫captcha_check()函數(shù)用于驗證碼的驗證16.3案例實現(xiàn)驗證碼生成驗證碼文本,創(chuàng)建驗證碼類編寫一個16.3案例實現(xiàn)用戶注冊編寫view\register.html文件,創(chuàng)建一個用戶注冊表單創(chuàng)建register.php顯示用戶注冊頁面在顯示用戶注冊頁面之前,添加代碼,實現(xiàn)表單的接收、驗證和處理在驗證成功后,調(diào)用register()函數(shù)實現(xiàn)新用戶的注冊注冊成功,將用戶信息保存到Session,然后跳轉(zhuǎn)到首頁16.3案例實現(xiàn)用戶注冊編寫view\register.h16.3案例實現(xiàn)記錄登錄狀態(tài)為增強(qiáng)用戶體驗,大部分網(wǎng)站在用戶登錄的表單中提供“下次自動登錄”或“記住登錄狀態(tài)”的復(fù)選框,當(dāng)用戶選中后進(jìn)行登錄,服務(wù)器就會利用Cookie保存用戶的登錄信息。在保存后,如果Session已經(jīng)過期,則可以利用Cookie進(jìn)行登錄。16.3案例實現(xiàn)記錄登錄狀態(tài)為增強(qiáng)用戶體驗,大部分網(wǎng)站在用16.3案例實現(xiàn)記錄登錄狀態(tài)在view\login.html中增加一個“記住登錄狀態(tài)”的復(fù)選框在common\config.php中添加Ccookie的的密鑰和默認(rèn)有效期,用于提高安全性在處理登錄表單的密碼驗證成功后,調(diào)用login_success()函數(shù)之前,處理用戶是否選中“記住登錄狀態(tài)”復(fù)選框在function.php中編寫autologin_cookie()函數(shù)用于將數(shù)據(jù)庫中已經(jīng)保存的密碼再次進(jìn)行加密,用于限制Cookie密碼的有效時間16.3案例實現(xiàn)記錄登錄狀態(tài)在view\login.htm16.3案例實現(xiàn)記錄登錄狀態(tài)編寫autologin_check()函數(shù)驗證Cookie密碼的有效性編寫login.php,判斷當(dāng)前用戶是否已經(jīng)在Cookie中保存了登錄狀態(tài)當(dāng)用戶保存了登錄狀態(tài)時,在view\login.html中顯示已保存的用戶信息用戶保存登錄狀態(tài),也需要在表單中輸入驗證碼才能進(jìn)行登錄16.3案例實現(xiàn)記錄登錄狀態(tài)編寫autologin_che16.3案例實現(xiàn)記錄登錄狀態(tài)另外,“記住登錄狀態(tài)”功能通常是提供給在登錄狀態(tài)下直接關(guān)閉瀏覽器的用戶,而若用戶單擊了網(wǎng)頁中的“退出”鏈接,則表示用戶需要完全退出。因此,下面修改login.php中實現(xiàn)用戶退出的代碼,在清除Session中的用戶信息后,再清除Cookie中保存的登錄信息16.3案例實現(xiàn)記錄登錄狀態(tài)另外,“記住登錄狀態(tài)”功能通常16.3案例實現(xiàn)記錄登錄狀態(tài)直接退出瀏覽器再次點擊登錄16.3案例實現(xiàn)記錄登錄狀態(tài)直接退出瀏覽器16.3案例實現(xiàn)用戶頭像上傳在網(wǎng)頁頂部顯示的用戶名,進(jìn)入個人中心,設(shè)置頭像編寫user.php,實現(xiàn)在用戶登錄的情況下顯示上傳頭像的頁面user.html在user.html中,若用戶頭像不為空時,顯示“./uploads/avatar/”中保存的用戶頭像,否則顯示默認(rèn)頭像“./images/noavatar.gif”繼續(xù)編寫user.php,實現(xiàn)接收用戶上傳頭像的表單,并在input()函數(shù)中增加對$_FILES數(shù)組的支持編寫user_avatar_upload()函數(shù)用于實現(xiàn)頭像文件上傳16.3案例實現(xiàn)用戶頭像上傳在網(wǎng)頁頂部顯示的用戶名,進(jìn)入個16.3案例實現(xiàn)用戶頭像上傳16.3案例實現(xiàn)用戶頭像上傳16.3案例實現(xiàn)欄目管理——設(shè)計欄目表在本項目中,欄目是對內(nèi)容的分類,用戶在發(fā)布內(nèi)容時可以選擇其所屬的欄目。由于欄目會在網(wǎng)頁的右側(cè)邊欄顯示,為了顯示效果,網(wǎng)站管理員可以為欄目設(shè)置顯示圖片。16.3案例實現(xiàn)欄目管理——設(shè)計欄目表在本項目中,欄目是對16.3案例實現(xiàn)欄目管理——設(shè)計欄目表字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT欄目idnameVARCHAR(12)DEFAULT''NOTNULL欄目名稱coverVARCHAR(255)DEFAULT''NOTNULL圖片地址sortINTDEFAULT0NOTNULL顯示順序sort字段表示欄目的排序值,數(shù)值小的排在前面,數(shù)值大的排在后面。INSERTINTO`fun_category`(`id`,`name`,`sort`)VALUES(1,'ThinkPHP',0),(2,'Bootstrap',1),(3,'Laravel',2),(4,'小道消息',3),(5,'嘿科技',4),(6,'趣快報',5),(7,'歪果趣聞',6),(9,'神吐槽',7),(8,'漲姿勢',8);16.3案例實現(xiàn)欄目管理——設(shè)計欄目表字段數(shù)據(jù)類型說明id16.3案例實現(xiàn)欄目管理——欄目數(shù)據(jù)的讀取和顯示將獲取欄目數(shù)據(jù)的內(nèi)容封裝到function.php文件中的category_list()函數(shù)中編寫欄目編輯頁category.php文件,引入欄目管理頁面在側(cè)邊欄中按照是否含有封面圖展示欄目信息在欄目管理頁面中實現(xiàn),批量添加和刪除欄目、為欄目設(shè)置封面圖等功能在category.php中接收表單,并分別調(diào)用對應(yīng)函數(shù)完成相應(yīng)的處理16.3案例實現(xiàn)欄目管理——欄目數(shù)據(jù)的讀取和顯示將獲取欄目16.3案例實現(xiàn)欄目管理——欄目數(shù)據(jù)的讀取和顯示16.3案例實現(xiàn)欄目管理——欄目數(shù)據(jù)的讀取和顯示16.3案例實現(xiàn)欄目管理——欄目添加編寫category_add()函數(shù)實現(xiàn)欄目的添加調(diào)用category_cover_upload()函數(shù)處理欄目的上傳圖片封面搜集欄目表單數(shù)據(jù),進(jìn)行過濾后保存到數(shù)據(jù)庫中在配置文件中指定,允許上傳的圖片類型16.3案例實現(xiàn)欄目管理——欄目添加編寫category_16.3案例實現(xiàn)欄目管理——欄目修改編寫category_save()函數(shù)實現(xiàn)欄目的修改,包括欄目記錄的修改;刪除欄目圖片;上傳圖片以及將欄目圖片修改結(jié)果保存到數(shù)據(jù)庫中編寫category_cover_delete()函數(shù)實現(xiàn)欄目圖片的刪除16.3案例實現(xiàn)欄目管理——欄目修改編寫category_16.3案例實現(xiàn)欄目管理——欄目刪除編寫category_delete()函數(shù)實現(xiàn)欄目的刪除接收表單提交的del數(shù)組,該數(shù)組中的每個元素是待刪除的欄目id。先刪除欄目圖片再刪除欄目記錄將被刪除欄目下POST表中的記錄更改為空欄目16.3案例實現(xiàn)欄目管理——欄目刪除編寫category_16.3案例實現(xiàn)內(nèi)容發(fā)布與修改——設(shè)計數(shù)據(jù)表字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT內(nèi)容idcidINTUNSIGNEDDEFAULT0NOTNULL欄目iduidINTUNSIGNEDDEFAULT0NOTNULL用戶idtypeENUM('pic','text','video')DEFAULT'text'NOTNULL內(nèi)容類型contentTEXTNOTNULLCOMMENT內(nèi)容文本timeINTUNSIGNEDDEFAULT0NOTNULL發(fā)布時間hitsINTUNSIGNEDDEFAULT0NOTNULL閱讀量replyINTUNSIGNEDDEFAULT0NOTNULL回復(fù)量字段數(shù)據(jù)類型說明idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT附件id

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論