PHP動(dòng)態(tài)網(wǎng)站開發(fā)項(xiàng)目教程課件 任務(wù)4 會(huì)員管理系統(tǒng)用戶登錄、資料修改及注銷_第1頁(yè)
PHP動(dòng)態(tài)網(wǎng)站開發(fā)項(xiàng)目教程課件 任務(wù)4 會(huì)員管理系統(tǒng)用戶登錄、資料修改及注銷_第2頁(yè)
PHP動(dòng)態(tài)網(wǎng)站開發(fā)項(xiàng)目教程課件 任務(wù)4 會(huì)員管理系統(tǒng)用戶登錄、資料修改及注銷_第3頁(yè)
PHP動(dòng)態(tài)網(wǎng)站開發(fā)項(xiàng)目教程課件 任務(wù)4 會(huì)員管理系統(tǒng)用戶登錄、資料修改及注銷_第4頁(yè)
PHP動(dòng)態(tài)網(wǎng)站開發(fā)項(xiàng)目教程課件 任務(wù)4 會(huì)員管理系統(tǒng)用戶登錄、資料修改及注銷_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PHP動(dòng)態(tài)網(wǎng)站開發(fā)項(xiàng)目教程任務(wù)4會(huì)員管理系統(tǒng)用戶登錄、資料修改及注銷子任務(wù)4.1用戶登錄4.1.1創(chuàng)建用戶登錄文件

根據(jù)項(xiàng)目開始前完成的詳細(xì)需求分析,現(xiàn)在需要完成登錄頁(yè)面的制作。(1)選中member目錄并單擊鼠標(biāo)右鍵,在快捷菜單中選擇“New”

→“PHPFile”命令,創(chuàng)建新文件login.php。(2)打開signup.php文件,把其中的內(nèi)容復(fù)制到login.php中。因?yàn)榈卿涰?yè)面和注冊(cè)頁(yè)面的靜態(tài)內(nèi)容有一定的相似之處,所以可以直接把注冊(cè)頁(yè)面的內(nèi)容復(fù)制過來(lái),然后進(jìn)行修改。(3)在login.php文件中修改導(dǎo)航欄中的當(dāng)前欄目,在“會(huì)員登錄”鏈接上添加class樣式“current”。在表單中只保留用戶名和密碼控件,刪除其他控件。同理,在JavaScript方法check()中只保留用戶名和密碼的相關(guān)驗(yàn)證內(nèi)容。(4)選中member目錄并單擊鼠標(biāo)右鍵,在快捷菜單中選擇“New”

→“PHPFile”命令,創(chuàng)建新文件postLogin.php。(5)在login.php文件中修改<form>標(biāo)簽中的action屬性,將其值改成postLogin.php即可。4.1.2制作用戶登錄后端文件

在SQL語(yǔ)句中,通過select關(guān)鍵字來(lái)實(shí)現(xiàn)查詢,通過where子句來(lái)實(shí)現(xiàn)數(shù)據(jù)記錄的篩選。篩選的依據(jù)是,判斷username這一列是否存在數(shù)據(jù)等于用戶輸入的用戶名,pw這一列是否存在數(shù)據(jù)等于用戶輸入的密碼經(jīng)過MD5加密后的結(jié)果。4.1.3通過Session變量保存登錄標(biāo)志

PHP中的Session變量用于存儲(chǔ)關(guān)于用戶會(huì)話(Session)的信息,或者更改用戶會(huì)話的設(shè)置。Session變量存儲(chǔ)單一用戶的信息,并且對(duì)于應(yīng)用程序中的所有頁(yè)面都是可用的。

存儲(chǔ)和取出Session變量的正確方法是使用PHP中的$_SESSION全局變量。如果要?jiǎng)h除某些Session變量,則可以使用unset()或session_destroy()函數(shù)。unset()函數(shù)用于釋放指定的Session變量,而session_destroy()可以刪除所有的Session變量。

需要注意,Session是有生命周期的,長(zhǎng)時(shí)間不操作該網(wǎng)站,Session將會(huì)過期,過期的Session會(huì)被自動(dòng)刪除。Session的默認(rèn)生命周期是1440s,可以在php.ini配置文件中修改和設(shè)置,或者直接在PHP文件中使用代碼來(lái)重新設(shè)置生命周期。子任務(wù)4.2注銷登錄4.2.1在導(dǎo)航欄中使用文件包含

項(xiàng)目制作到這里,小王同學(xué)發(fā)現(xiàn),頁(yè)面頂部的導(dǎo)航欄會(huì)在每一個(gè)頁(yè)面中顯示,這些代碼在每一個(gè)文件中重復(fù)出現(xiàn),借鑒前面完成conn.php文件的經(jīng)驗(yàn),應(yīng)該也可以用同樣的方法,即將導(dǎo)航欄代碼放到一個(gè)單獨(dú)的文件中,以優(yōu)化代碼。

選中member目錄并單擊鼠標(biāo)右鍵,創(chuàng)建新文件nav.php,并將原來(lái)導(dǎo)航欄相關(guān)的CSS、HTML代碼移植過來(lái)。

修改index.php、signup.php、login.php文件,在原來(lái)導(dǎo)航欄代碼的位置用include_once()包含nav.php文件。需要注意的是,由于在nav.php文件中使用了Session,因此,在其他文件中引用此文件之前,都需要先開啟會(huì)話。

可以看到,小王同學(xué)在導(dǎo)航欄中添加了當(dāng)前登錄者的用戶名和注銷登錄的鏈接。其中使用了一個(gè)函數(shù)isset(),這個(gè)函數(shù)用于判斷變量是否存在。if(isset($_SESSION['loggedUsername'])&&$_SESSION['loggedUsername']<>'')的作用是,首先判斷$_SESSION['loggedUsername']是否存在,如果不存在,則直接返回false;如果存在,則判斷$_SESSION['loggedUsername']是否為空。登錄成功后,$_SESSION['loggedUsername']中保存的是當(dāng)前登錄者的用戶名。如果這兩個(gè)條件均為true,則if條件判斷語(yǔ)句結(jié)果為true,顯示當(dāng)前登錄者的用戶名和注銷登錄的鏈接。4.2.2實(shí)現(xiàn)導(dǎo)航欄當(dāng)前欄目高亮功能

完成導(dǎo)航欄的文件包含后,小王測(cè)試了一下項(xiàng)目,發(fā)現(xiàn)單擊導(dǎo)航欄中的各個(gè)欄目后,無(wú)法實(shí)現(xiàn)當(dāng)前欄目的高亮顯示。通過思考他發(fā)現(xiàn)了問題,就是當(dāng)前欄目會(huì)在當(dāng)前鏈接的“<a>”標(biāo)簽上添加一個(gè)樣式current?,F(xiàn)在使用的是包含文件,無(wú)法知道當(dāng)前是哪個(gè)欄目,樣式current也就不知道應(yīng)該添加在哪個(gè)鏈接上。

經(jīng)過反復(fù)研究,小王同學(xué)終于想到了一個(gè)辦法來(lái)解決此難題。他使用的具體方法是,在nav.php文件中的各個(gè)導(dǎo)航鏈接上添加一個(gè)id參數(shù),當(dāng)其他頁(yè)面包含nav.php文件后,在單擊鏈接跳轉(zhuǎn)時(shí),會(huì)同時(shí)傳遞這個(gè)id參數(shù),然后在nav.php中讀取這個(gè)參數(shù),根據(jù)參數(shù)的值來(lái)決定給哪一個(gè)欄目添加當(dāng)前欄目指示。這里就涉及PHP各個(gè)頁(yè)面之間參數(shù)傳遞的方法。一個(gè)簡(jiǎn)單的頁(yè)面間傳參的方式是在URL后面添加參數(shù),使用“?”進(jìn)行地址和參數(shù)的分隔,用等號(hào)連接參數(shù)名和具體的值,如果有多個(gè)參數(shù),則使用“&”連接即可。

其中地址欄傳遞過來(lái)的參數(shù)在后端頁(yè)面中可以使用$_GET讀取。在讀取之前,應(yīng)該先用isset()函數(shù)判斷id參數(shù)是否存在。比如,當(dāng)用戶第一次進(jìn)入系統(tǒng),打開首頁(yè),這里包含的nav.php文件沒有id參數(shù),自然也就無(wú)法讀取到id。只有單擊某個(gè)導(dǎo)航鏈接跳轉(zhuǎn)至新的頁(yè)面時(shí),才會(huì)傳遞id參數(shù)。圖4.2.1

系統(tǒng)提示

在PhpStorm的右下角默認(rèn)顯示有一個(gè)“PHP:5.6”鏈接,表示當(dāng)前IDE設(shè)置的PHP版本是5.6,單擊可以設(shè)置PHP的版本,如圖4.2.2所示。根據(jù)前面Web服務(wù)器的配置(請(qǐng)參考圖2.2.1中的“PHP版本”),在這里將PHP的版本設(shè)置成7.3即可。經(jīng)過重新設(shè)置,紅色波浪線會(huì)自動(dòng)消失。圖4.2.2

設(shè)置PHP版本

session_destroy()函數(shù)的作用是刪除所有會(huì)話。當(dāng)然需要注意的是,使用session_destroy()之前還是需要先開啟會(huì)話。刪除會(huì)話后,再使用header()函數(shù)即可直接跳轉(zhuǎn)至index.php文件。

接下來(lái)小王同學(xué)測(cè)試了項(xiàng)目的運(yùn)行,得到了圖4.2.3所示的結(jié)果。圖4.2.3

登錄成功后在導(dǎo)航欄顯示登錄者的用戶名子任務(wù)4.3會(huì)員資料修改4.3.1優(yōu)化登錄頁(yè)面跳轉(zhuǎn)邏輯

小王同學(xué)查看了已經(jīng)做好的用戶登錄功能,當(dāng)?shù)卿洺晒?,保存了登錄?biāo)志,就沒有執(zhí)行其他操作了,頁(yè)面也還是繼續(xù)停留在登錄頁(yè)面,這顯然不太合理。登錄成功后應(yīng)該跳轉(zhuǎn)到首頁(yè)才比較合理。

小王同學(xué)把postLogin.php文件修改了一下,添加了登錄成功后的跳轉(zhuǎn)功能。如果登錄成功,則跳轉(zhuǎn)至首頁(yè)。如果登錄失敗,則返回至上一個(gè)頁(yè)面,讓用戶重新輸入用戶名和密碼進(jìn)行登錄。4.3.2創(chuàng)建會(huì)員資料修改頁(yè)面

通過分析會(huì)員資料修改頁(yè)面的特點(diǎn),小王同學(xué)梳理了制作的思路。(1)在member項(xiàng)目中新建文件modify.php。在制作導(dǎo)航欄時(shí),已經(jīng)在nav.php中的“個(gè)人資料修改”鏈接添加了目標(biāo)鏈接頁(yè)面modify.php,但還未制作此文件,因此需要?jiǎng)?chuàng)建此文件。(2)從signup.php文件中復(fù)制代碼,然后粘貼到modify.php文件中。由于資料修改頁(yè)面和注冊(cè)頁(yè)面有較高的相似性,因此可以直接從signup.php文件中復(fù)制代碼,再進(jìn)行適當(dāng)修改。(3)在表單中顯示已有的各項(xiàng)資料。(4)修改資料后,單擊“提交”按鈕,將各項(xiàng)數(shù)據(jù)提交至后端,使用SQL中的update語(yǔ)句更新數(shù)據(jù)表記錄,即可完成資料更新操作。(5)修改資料時(shí),要注意密碼的處理方式??梢钥紤]兩種方式:第一種方式是,密碼默認(rèn)留空,如果要修改,就填寫新的密碼和確認(rèn)密碼,不填寫就不修改密碼;第二種方式是,在密碼后面添加一個(gè)復(fù)選框,勾選代表要修改密碼,不勾選代表不修改密碼。(6)修改資料時(shí),還要注意檢查當(dāng)前是否處于登錄狀態(tài)。只有登錄以后才能修改資料。同時(shí),一般來(lái)說(shuō),用戶名是不允許修改的。

通過上述分析,小王同學(xué)查詢了各種相關(guān)資料,順利地完成了修改資料的功能。參數(shù)描述result必需。規(guī)定由mysqli_query()、mysqli_store_result()或

mysqli_use_result()返回的結(jié)果集標(biāo)識(shí)符resulttype可選。規(guī)定應(yīng)該產(chǎn)生哪種類型的數(shù)組。可以是以下值中的任意一個(gè):1.MYSQLI_ASSOC(關(guān)聯(lián)數(shù)組);2.MYSQLI_NUM(數(shù)字?jǐn)?shù)組);3.MYSQLI_BOTH(二者兼有)表4.3.1

mysqli_fetch_array()函數(shù)參數(shù)詳情參數(shù)描述separator必需。規(guī)定在哪里分割字符串string必需。要分割的字符串limit可選。規(guī)定所返回的數(shù)組元素的數(shù)目??赡艿闹担?/p>

l

大于

0——返回包含最多

limit

個(gè)元素的數(shù)組;l

小于

0——返回包含除了最后的

limit

個(gè)元素以外的所有元素的數(shù)組;l0——會(huì)被當(dāng)作1,返回包含一個(gè)元素的數(shù)組表4.3.2

explode()函數(shù)參數(shù)詳情參數(shù)描述needle必需。規(guī)定要在數(shù)組中搜索的值haystack必需。規(guī)定要搜索的數(shù)組strict可選。如果該參數(shù)設(shè)置為

TRUE,則

in_array()函數(shù)判斷搜索的數(shù)據(jù)與數(shù)組的值的類型是否相同表4.3.3

in_array()函數(shù)參數(shù)詳情4.3.3制作資料修改后端文件

完成了前端文件,接下來(lái)就是后端文件的制作了。單擊“提交”按鈕,將進(jìn)入postModify.php文件。

小王同學(xué)新建了postModify.php文件,并在其中讀取了前端提交的各項(xiàng)數(shù)據(jù),完成必要的數(shù)據(jù)驗(yàn)證后,使用update語(yǔ)句更新數(shù)據(jù)庫(kù),這樣就完成了修改資料的操作?!救蝿?wù)小

溫馨提示

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

評(píng)論

0/150

提交評(píng)論