




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、案例會員管理設計 圖2 概述 會員管理的網頁功能在現今網站構建上相當的重要,尤其是對于一些需要 付費來取得會員認證的公司和個人網站。為了避免誤闖的用戶及有心的黑客,會 員認證及管理的方式的確有其存在的必要。 因此,設計一個縝密的會員管理網頁, 也是我們學習PHP的一個重點。 系統(tǒng)面向三種用戶,一是新用戶,需要注冊才能成為會員;二是會員用戶, 可能需要修改資料和找回遺忘的密碼;三是管理員用戶,承擔對會員資料的維護 和更新。 系統(tǒng)架構 首先要有個存放會員資料的數據庫。 根據用戶的角色來設定系統(tǒng)的主要功能 1 注冊為新會員。 2找回遺忘的密碼。 3 會員修改資料。 4. 普通會員專區(qū)。 5管理員對會
2、員資料的管理。 請求URL 用戶 工作流程圖如圖1所示: Web服務器 會員管 理頁面 XI _ 注冊為 新會員 普通會 員管理 管理員 頁面 寫入 提取 寫入會員信息 數據庫 服務器 提取和寫入用 戶信息 說明: 1 用戶向服務器發(fā)出訪問請求; 2 服務器提供的會員管理頁面是以菜單方式提供用戶選擇; 3新用戶注冊新會員,提供輸入信息的表單并要求用戶輸入相關信息,寫入數 據庫; 4.普通會員能登錄到會員專區(qū),通過用戶ID和密碼驗證身份進入專區(qū);通過電 子郵箱和住址來提取忘記的密碼;或通過用戶ID和密碼驗證身份進入修改個 人資料頁面; 5管理員作為網站的站長,也是通過用戶 ID和密碼驗證身份進入
3、其管理界面, 瀏覽會員資料和刪除會員資料。 三、系統(tǒng)設計 1 邏輯結構設計 根據對系統(tǒng)架構的描述,可得系統(tǒng)的邏輯結構,如圖 2所示。 主頁面. main .php Top:系統(tǒng)標題 title.html :規(guī)劃窗口結構 Left :菜單 Right:顯示 select.html 新會員注冊 n ewuser.html 表單:新用戶輸入資料 存儲數據 savedata.php I驗證身份|會員區(qū) member.php 查詢密碼 search.php 驗證身份|修改 modify.php 驗證身份|管理 mamager.php 寫入數據庫 回顯提示信息 讀取數據庫 回顯提示信息 讀取數據庫 回顯提
4、示信息 讀取數據庫 回顯表單信息 讀取數據庫 回顯提示信息 更新數據 更新數據 忘記密碼: forget.php 表單:身份驗證 會員登錄: logi n.php 表單:身份驗證 會員登錄: logi n.php 表單:身份驗證 站長登錄: logi n.php 表單:身份驗證 注冊為新會員: n ewuser.htm 表單:用戶資料 update.php_ 寫入數據庫 回顯提示信息 delete.php_ 讀寫數據庫 回顯提示信息 2 數據庫設計 在MySQL數據庫服務器上建立名為 member數據,其中包含一個數據庫表 member,各字段的定義和說明如下表: 字段 類型 NULL 說明
5、備注 id char(20) 否 用戶登錄id email char(40) 否 用戶電子郵件網址 address char(60) 用戶住址 password char(20) 否 登錄密碼 sex char(2) 是 性別 idx in t(11) 否 用戶序列號 auto i ncreme nt 注:通過phpMyadmin建立,在MySQL的data文件夾中會自動創(chuàng)建一詞數據庫為名的 文件夾,包含相關數據。 本案例用到的SQL命令如下表 命令格式 含義 SELECT * FROM member WHERE 條件表達式 查詢(讀取)數據表的記錄 INSERT INTO member (字
6、段組,)VALUE (對應值,) 向數據表的表尾追加記錄 UPDATE member SET 字段=值,WHERE 條件表達式 更新數據表的記錄 DELETE FROM member WHERE 條件表達式 刪除數據表的記錄 ALTER TABLE member DROP 字段名 刪除數據表的字段 ALTER TABLE member ADD 字段名 數據類型 創(chuàng)建數據表的字段 3 界面設計 主頁面: main.php 規(guī)劃窗口界面 標題行(title) - title.html 菜單(select) -select.html 顯示(show) -newuser.html 等 標題頁:titl
7、e.html 顯示系統(tǒng)的標題信息。 菜單頁:select.html 包含五個超級鏈接的文本。分別是:登錄為新會員、會員專區(qū)、忘記密碼、 修改數據、站長管理 新會員注冊:newuser.html包含以下表單,用表格組織如下所示 存儲數據: savedata.php顯示成功注冊的信息 標題行 用戶id 文本框(20) 性別 男女單選框 Email 文本框(40) 住址 文本框(60) 輸入密碼 密碼框(10)* 重新確認 密碼框(10)* 送出資料(submit )清除重寫(reset) 會員注冊:logi n. php包含以下表單,用表格組織 標題行 輸入id 文本框(20) 輸入密碼 密碼框(
8、10)* 登錄(submit)重新輸入(reset) 忘記密碼:forget.php包含以下表單,用表格組織 標題行 輸入Email 文本框(40) 輸入地址 文本框(60) 查詢(submit)重新輸入(reset) 會員修改數據:modify.php讀取會員信息回顯在表單中,等待會員修改其 中的數據 標題行 用戶id 文本框(20) 性別 男女單選框 Email 文本框(40) 住址 文本框(60) 輸入密碼 密碼框(10) * 重新確認 密碼框(10) * 修改(submit) 站長管理:mamager.php讀取會員信息回顯在表格中,等待站長修改,同時 上方有導航條 導航條 編號 姓名
9、 Email賬號 住址 密碼 性別 復選框N0編號 用戶ID Email 確定刪除(submit)重新選?。╮eset) 四、編碼實現 1. 主頁面 1) main.php 這是會員管理網頁的框架,使用HTML的框架標記,把頁面劃分為品型結 構。主要理解HTML的框架標記的用法。 會員管理 !- FRAMESET- FRAME n ame=show src=n ewuser.htm 這一頁用框架,但您的瀏覽器不支持他們! -mai n.php - 2) title.html 這只是顯示會員管理網頁的標題。位于框頁的上部。 會員管理網頁 -title.html - 3) select.html
10、這是會員管理的導航菜單,通過超級鏈接,與各個功能頁面鏈接。位于框 頁的下左部 對會員和站長登錄時,根據不同的編號確定登錄后所要執(zhí)行的程序來完成 主要理解HTML的超鏈接標記的用法,尤其是含傳送參數的情況 A HRef= newuser.htm登錄新會員 會員專區(qū) 忘記密碼 修改資料 站長管理 -select.html - 4) newuser.html 這是框頁的下右部。主要是顯示超鏈接的頁面。初始頁面是新會員注冊頁 面。通過表單收集會員的資料。為了使頁面整齊,使用的表格來布局頁面。 主要理解HTML的表單標記、表格標記的用法。明確表單處理方式和處理 表單的程序,尤其要重視對表單中各個組件的n
11、ame屬性的定義不可忽略。還要 注意兩次輸入密碼的組件name屬性要不同。 登錄成新會員一一請先填寫以下資料 id 性別 男 女 Email 住址 輸入密碼 重新輸入 -newuser.html - 2. 新會員數據處理savedata.php ?php in clude(ope ndata.php); $sql=select * from member where id=$id; $records=mysql_query($sql); if($id =) $errmsg=ID字段不可為空白!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif($sex=)
12、$errmsg=請選擇性別!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif(!ereg(:al num:+:a In um:+.:al nu m:,$email) $errmsg=電子郵件地址錯誤!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif($addr=) $errmsg=住址字段不能為空白!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif(strle n( $password)10 or strle n( $password)6) $errmsg=請輸入6-10個字符的密
13、碼!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif($password$c on firm) $errmsg=請重新確認密碼!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif(mysql_fetch_row($records) $errmsg=這個賬戶已經有人使用了,請換新的ID !; echo ; echo 錯誤信息 .$errmsg.; echo ; else $errmsg=存儲個人資料成功; $sql=i nsert into member(id,email,address,password,sex) val
14、ue ($id,$email,$addr,$password,$sex); mysql_query($sql); echo ; echo 注冊信息 .$errmsg.; echo 恭喜你,你已經成功的登錄成為新會員!; ? -savedata.php - 代碼解讀: 這個程序組主要是用來逐層驗證用戶輸入各字段的數據是否準確,并驗證 在數據表中是否已有相同的id會員,若數據不準確或者id重復則出現相關的錯 誤信息。 1) 連接數據庫的代碼寫在一個公共模塊opendata.php中,有利于代碼復用, 這里注意使用include()函數把它包含到所要運用的程序中。 -ope ndata.php- 2
15、) 從數據庫讀取和寫入數據,PHP是通過把SQL命令定義為字符串,然 后使用函數mysql_query()來實現的。 3) 正則表達式:al nu m:+:al num:+.:a In um:是驗證電子郵件地址的有效 方法。 4)各個表單組件的輸入要求可以用 JavaScript在 newuser.html中加以驗證, 這樣做會提高處理的效率。這里通過對按鈕組件的事件處理來實現的,這個按鈕 是自定義按鈕,事件是on Click,當觸發(fā)事件后,執(zhí)行函數 history.back()返回上 一頁面,即newuser.html,要求用戶重新輸入。 5)此程序中遇到的變量祥解 變量名 取值 含義 $s
16、ql SQL語句 把SQL語句定義為字符串 $records 查詢數據表的結果集 與數據表對應的數據集合 $id/$sex/$addr/$email $password/$c on firm 非空字符串 6-10個字符串 前頁表單中用戶填寫的數據 $errmsg 非空字符串 反饋給用戶的錯誤信息 5)此程序中遇到的函數祥解 函數 用法 含義 Include文件名 ” 放在網頁的 _L* Ayr 標簽之刖; 當解釋器讀到函數時,會把指定的文件 讀進來 Mysql_query($sql) $sql是一個由SQL語 句構成的字符串 傳入一個SQL語句給MySQL history.back() 無參數
17、 返回上一個頁面(跳轉來的頁面) Ereg(正則表達式,$var) $var是字符串變量 判斷字符匹配 Strle n( $var) $var是字符串變量 求字符串的長度 3. 查詢密碼 這段程序的功能是讓用戶輸入自己的 Email和住址來查詢忘記的密碼,只要 兩者之中有一個為準確的數據即可。表單的處理程序seach.php便會找到并顯示 出用戶的密碼。 1)填寫查詢條件:forget.php 密碼查詢輸入住址或者電子郵件賬號來查詢密碼 輸入 E-mail 輸入住址 - forget.php - 與登錄界面相似。在表單的下方的,其作用是把處 理程序中的錯誤信息顯示出來。 2)取回密碼:sear
18、ch.php 算法描述 若用戶的輸入(Email或地址)為空,則出現錯誤信息; 若用戶輸入Emai不空,則用Emai作為條件查詢,成功則返回密碼; 否則,用輸入的地址作為條件查詢,成功則返回密碼,失敗則返回無法找回的錯誤 信息并返回前一頁面,繼續(xù)輸入; 若用戶只輸入地址,則用地址作為條件查詢;成功則返回密碼,失敗則返回無法找 回的錯誤信息并返回前一頁面,繼續(xù)輸入。 這里的查詢是: 使用SELECT命令查詢數據庫中與輸入的查詢條件一致的記錄; 把記錄到的密碼存在變量 $check中; 若$check不空,查詢成功 否則失敗 ? in clude(ope ndata.php); if($email
19、=” and $addr=) $errmsg=請輸入地址或者電子郵件賬號!; Header(Locati on: forget.php?errmsg=$errmsg); echo ; if($email) $sql=select * from member where email=$email; $records=mysql_query($sql); list($user,$check,$add,$password,$sex)=mysql_fetch_row($records); if($check) echo 您的密碼為 .$password.; elseif($addr) $sql=sel
20、ect * from member where address=$addr; $records=mysql_query($sql); list($user,$email,$check,$password,$sex)=mysql_fetch_row($records); if($check) echo 您的密碼為 .$password. ; else echo 無法按您的輸入找到您的密碼,請檢查輸入是否有誤! ; echo ; else echo 無法按您的輸入找到您的密碼, 請檢查輸入是否有誤! ; echo ; elseif($addr) $sql=select * from member
21、where address=$addr; $records=mysql_query($sql); list($user,$email,$check,$password)=mysql_fetch_row($records); if($check) echo 您的密碼為 .$password.; else echo 無法按您的輸入找到您的密碼, 請檢查輸入是否有誤! ; echo ; ? -search.php - 3)此程序中用到的變量祥解 變量名 取值 含義 $check 字符串 數據庫中滿足查詢條件密碼,為空時,說明輸入的條件不正確 4)此程序中用到的函數祥解 函數 用法 含義 Header
22、(Locatio n: forget.php?errmsg=$errmsg) 放在HTML標記之前 :傳遞HTTP的標頭 List($user,$email,$check,$password) 參數的數據類型可異 同時處理一組變量 Mysql_fetch_row($records) $records是執(zhí)行查詢語 句獲得的數據集 取得記錄,以列表形 式返回數據 4. 登錄頁面:log in .php 當會員要進入專區(qū)服務、修改個人數據時,或者站長要維護會員信息時都 要先登錄,驗明身份后才能進入相應的頁面。這里,根據$login的值來決定執(zhí)行 的PHP程序。 FORM actio n= metho
23、d=post 輸入 ID 輸入密碼 -login.php - 代碼解讀: 1)通過$login判斷用戶所要登錄的頁面,設置頁面的標題和處理輸入身份信 息的PHP程序,這里的$login是選擇了鏈接后傳送來的。 2) 顯示表單,要求用戶填寫ID和密碼,FORM中? echo $action; ? 動態(tài)地設定處理此表單的程序。 3)此程序中用到的變量祥解。 變量名 取值 含義 $title 字符串 要登錄頁面的標題 $act ion 以PHP程序名為值的字符串 要執(zhí)行的PHP程序名 5. 會員專區(qū)登錄處理member.php 這是程序是會員專用的網頁,網頁的內容可根據需要設計,加在“歡迎光 臨會員
24、網頁”之后。 ? in clude(ope ndata.php); $sql=select * from member where id=$id; $records=mysql_query($sql); list($user,$email,$addr,$check,$sex)=mysql_fetch_row($records); if($user=”) $errmsg=ID輸入不正確或者尚未登錄為新會員; header(Locati on :logi n. php?errmsg=$errmsg elseif($password$check) $errmsg=密碼輸入不正確! ?。?header
25、(Locati on :logi n. php?errmsg=$errmsg ? ,歡迎光臨會員網頁。 -member.php - 代碼解讀 PHP代碼部分是驗證會員身份的 算法描述: 建立數據庫鏈接; 讀取與輸入用戶 id 相同的記錄; 存放在一列變量中; 若用戶名為空,則 設置錯誤信息; 程序重新定位到登錄頁面,顯示錯誤信息, (要求用戶重新輸入) 否則,若用戶輸入密碼與數據庫中的不一致,則 設置錯誤信息; 程序重新定位到登錄頁面,顯示錯誤信息, (要求用戶重新輸入) (合法身份,顯示歡迎信息) 6數據修改登錄處理 包括兩個程序 modify.php 和 update.php。 1) mo
26、dify.php 這段程序在確定了會員身份后,顯示所填寫的會員信息,供用戶修改 密碼查詢輸入住址或者電子郵件賬號來查詢密碼 輸入 E-mail 輸入住址 -modify.php - (1) PHP代碼部分是驗證會員身份的。算法與member.php相同,但增加了 獲取單選按鈕的選中狀態(tài)部分。 (2)HTML代碼部分產生一個表單,各個組件內的數據對應該會員在數據庫 存儲的信息;用戶可以在表單上直接修改,并重新確認密碼,按下【修改】按鈕 便能將此表單中的數據傳送到update.php來處理。 (3)此程序中用到的變量祥解 變量名 取值 含義 $boy 空或 selected 記錄“男”單選按鈕是否
27、被選中 $girl 空或 selected 記錄“女”單選按鈕是否被選中 2) update.php 這段程序與savedata.php類似,不同之處在于,此處對合法數據添加到數據庫 中采用的是更新( UPDATE 命令) ? in clude(ope ndata.php); $sql=select * from member where id=$id; $records=mysql_query($sql); if($id=”) $errmsg=ID字段不可為空白??; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif(!ereg(A:a In um:+:a I
28、n um:+.:a In um:,$email) $errmsg=電子郵件地址錯誤!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif($addr=) $errmsg=住址字段不能為空白!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif(strle n( $password)10 or strle n( $password)6) $errmsg=請輸入6-10個字符的密碼!; echo ; echo 錯誤信息 .$errmsg.; echo ; elseif($password$c on firm) $errmsg=請重
29、新確認密碼!; echo ; echo 錯誤信息 .$errmsg.; echo ; else $sql=update member set id=$id, email=$email, address=$addr, password=$password, sex=$sex where id=$id; mysql query($sql); 7 站長管理登錄處理 包括兩個程序manager.php和delete.php 1) manager.php 這段程序在確定了站長身份后,顯示所數據表中會員的信息,并選取某些 數據進行刪除。 ? /markl in clude(ope ndata.php);
30、$sql=select * from member where id=admi nistrator; $records=mysql_query($sql); list($user,$semail,$addr,$check,$sex,$e n)=mysql_fetch_row($records); if($password$check and $enter1true) $errmsg=輸入管理員賬號或密碼錯誤?。?Header(Locatio n:logi n.php?errmsg=$errmsg /markl $sql=select * from member ; /mark2 $record
31、s=mysql_query($sql); $total=mysql_ nu m_rows($records); $pagemax=10; $lastp=ceil($total/$pagemax); if ($page no$lastp) $page no=$lastp; elseif($page no $total) $n uml=$total;/mark2 $msg仁目前共有 . $total. 名會員,共 .$lastp. 頁。”;mark3 $msg2=本頁是第 .$pageno. 頁,; $msg2.=列出了第 .$numf. 至U .$ nu ml. 條記錄。; if($page n
32、o!=1) $msg.= 第 1 頁 ; else $msg.= 第 1 頁; $msg.= | ; if($page no1) $msg.=A HRef=ma nager.php?page no=.($page no-1). $msg.= | ; if($page no$lastp) $msg.=A HRef=ma nager.php?page no=.($page no+1). $msg.= if($page no !=$lastp) $msg.=A HRef=manager.php?pageno=.($lastp). else $msg.= 最后頁 ; $sql=select * fro
33、m member where (idx=$ numf and idx /mark3 /mark4 FORM acti on=man ager.php?e nter仁true echo .$id.$email.$addr. .$password.$sex.; ? mark4 -ma nager.php - (1) PHP代碼的前部分是驗證會員身份的。默認的管理員Id為administrator, 此條記錄也建立在 member數據表中。如代碼段中到mark1處。 (2) 接下來是設置分頁顯示的參數。如代碼段中到/mark2處。 算法描述: 從連接的數據庫中讀取數據表member所有的記錄,存放在
34、變量 $records中 獲取數據表中包含的記錄數,存放在變量$total中; 設置每頁顯示的記錄數為10; 計算數據表中的記錄最后一頁的頁碼,存放在變量$lastp中; 若當前頁碼大于最后一頁的頁碼,則 當前頁碼=最后一頁的頁碼; 若當前頁碼小于1時,則 當前頁碼=1 ; 計算當前頁開始的記錄編號; 計算當前頁結束的記錄編號; 若當前頁結束的記錄編號小于數據表中包含的記錄數時,則 當前頁結束的記錄編號=于數據表中包含的記錄數 (3)HTML代碼前一個表格中顯示導航條,包括會員數量信息、總頁數目 前所在頁碼;第一頁、上一頁、下一頁、最后一頁的導航鏈接以及用戶輸入要跳 轉頁碼的文本框和確認按鈕。
35、如代碼段中到 mark3處。 算法描述: 設置到導航條上的第一條的信息:目前共有會員數和共有的頁數 設置到導航條上的第二條的信息:本頁是第幾頁,列出了第幾條到第幾條記錄 設置到導航條上的導航鏈接信息: 若當前頁是第一頁,則信息為鏈接到第1頁,否則只顯示第1頁(無鏈接), 并在鏈接信息后追加分割線| 若當前頁大于第一頁,則信息為鏈接到上一頁,在鏈接信息后追加分割線| 若當前頁小于最后一頁,則信息為鏈接到下一頁,在鏈接信息后追加分割線| 若當前頁等于最后一頁,則信息為鏈接到最后頁,否則只顯示最后頁(無鏈 接),在鏈接信息后追加分割線| 獲取當前頁的記錄信息,為顯示做好準備。 特別注意的是,當處于第一頁時,上一頁不出現,第一頁無鏈接 (4)HTML代碼中的表格顯示會員信息。如代碼段中到 mark4處。 嵌入在HTML中的PHP代碼算法描述如下: 獲取數據表中所在分頁各行記錄,存在一列變量中 編號列顯示復選框組件和 N0. (注意組件的name屬性是數組,以 存放不同的選中狀態(tài),數組下標與記錄行的主索引對應,組件的value屬性 是del,當選中時,該行 name屬性的值為del), 依次顯示其他列的值; 重復以上步驟,直到所在頁記錄顯示 (5)此程序中用到的變量祥解 變量名 取值 含義 $boy 或 selected 記錄“男”單選按鈕是否被選中 $girl ” selec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)培訓課件制作指南
- 油氣管線不動火機械冷切割方案
- 企業(yè)培訓總結課件
- 優(yōu)化維護服務策略
- 信息技術采購合同知識產權保護與技術創(chuàng)新條款
- 生態(tài)停車場投資建設與運營管理合同
- 餐飲行業(yè)特色飲品技術與品牌合作協(xié)議
- 餐飲連鎖品牌跨區(qū)域經營股份合作協(xié)議
- 礦業(yè)開發(fā)項目股權交割與收益分成協(xié)議
- 車輛掛靠與汽車租賃平臺運營合同
- 農發(fā)行信貸業(yè)務考試題庫題庫附答案
- 2024普通高中物理課程標準解讀
- 精神分裂癥護理查房
- 建筑物聯網工程綜合實訓 課件 第1-3章 物聯網技術導論、物聯網領域的關鍵技術、智能建造工程場景中的物聯網
- 初中數學中心對稱圖形訓練50題(含參考答案)
- 大中小學思政課內容一體化研究
- 下半年消防演練總結
- 奧妥珠單抗注射液
- 市政工程質量創(chuàng)優(yōu)計劃
- 服務質量分析會
- 2023學年完整公開課版《法律的特征》
評論
0/150
提交評論