版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
案例簡易網(wǎng)上書店之會員注冊和登錄設(shè)計一、概述網(wǎng)上購物,它是目前網(wǎng)站實(shí)現(xiàn)盈利的一大手段,也是電子商務(wù)發(fā)展的主要方向之一。會員通過網(wǎng)絡(luò)購物,足不出戶地就可以買到自己所需的商品,PHP作為當(dāng)前日益推廣的服務(wù)器腳本語言,對于電子商務(wù)的支持是“不遺余力”的。使用PHP和MySQL數(shù)據(jù)庫,再加上一些基礎(chǔ)的網(wǎng)頁設(shè)計技巧,我們可以很輕松地搭建一個網(wǎng)上購物站點(diǎn),實(shí)現(xiàn)網(wǎng)上購物的各種功能。在實(shí)際應(yīng)用中的網(wǎng)上購物站點(diǎn),它設(shè)計的技術(shù)是多方面的,而且需要考慮大量的設(shè)計細(xì)節(jié)。這個案例主要以PHP為開發(fā)語言,MySQL為數(shù)據(jù)庫,結(jié)合一些HTML使用技巧,搭建一個規(guī)模雖小,但功能齊全的網(wǎng)上購物模型。根據(jù)實(shí)際應(yīng)用,可以在此模型上不斷完善,開發(fā)出功能齊全、服務(wù)一流的網(wǎng)上購物站點(diǎn)。這里,首先要解決的是會員注冊和登錄設(shè)計。二、系統(tǒng)架構(gòu)登錄時。要提供一個表單,讓會員輸入會員ID和名稱,這是在整個購書過程中都要應(yīng)用到的變量。如果是新會員,需要注冊,填寫一些必要的資料。申領(lǐng)購書卡。接著,要對注冊數(shù)據(jù)進(jìn)行驗(yàn)證,確定其能否成為新會員對登錄的會員,要進(jìn)行身份驗(yàn)證。本案例的會員注冊和登錄具有如下功能:1.會員的登錄。2.新會員的注冊。3.新會員填寫資料。4.驗(yàn)證資料填寫的正確性。5.會員身份認(rèn)證。本案例工作流程圖如圖1所示:WWeb服務(wù)器會員請求登錄合法驗(yàn)證后寫入會員信息數(shù)據(jù)庫服務(wù)器歡迎頁面提取會員信息驗(yàn)證會員身份會員身份驗(yàn)證注冊為新會員圖1說明:1.會員向服務(wù)器發(fā)出登錄請求;2.服務(wù)器根據(jù)向會員傳送歡迎頁面,并提供選擇的入口;3.會員進(jìn)入身份驗(yàn)證;4.新會員注冊成為會員;5.驗(yàn)證新會員提供的購物卡和資料信息。三、系統(tǒng)設(shè)計1.邏輯結(jié)構(gòu)設(shè)計根據(jù)對系統(tǒng)的功能描述,可得如圖2所示的系統(tǒng)邏輯結(jié)構(gòu)圖。注冊頁面1:新會員id注冊頁面1:新會員idapply.html表單:新會員id購書卡購書卡密碼歡迎頁面index.php注冊:注冊頁面登錄:會員名會員密碼驗(yàn)證輸入處理apply.php購物卡及密碼已存在數(shù)據(jù)庫中注冊頁面2:資料填寫applysrc.html表單:會員資料登錄頁面:驗(yàn)證身份login.php讀取數(shù)據(jù),驗(yàn)證檢查輸入合法性applysrc.html中JavaScript會員id密碼身份證號注冊頁面3:成功注冊success.php寫入數(shù)據(jù)庫回顯會員成功登陸信息圖22.?dāng)?shù)據(jù)庫設(shè)計在MySQL數(shù)據(jù)庫服務(wù)器上建立名為bookshop數(shù)據(jù)庫,其中包含三個數(shù)據(jù)表userinf、card、usercard,各字段的定義和說明如下。表userdate字段類型NULL說明備注serialint(5)否會員序列號auto_incrementuseridchar(30)否會員登錄idusernamechar(20)否會員姓名passwordchar(20)否登錄密碼agetinint是年齡sexchar(2)是性別addrchar(20)是地址postchar(30)是郵編phonechar(20)否電話號碼15或18個字符createtimedatetime是資料創(chuàng)建時間CURRENT_TIMESTAMP表card字段類型NULL說明備注serialint(5)否購書卡序列號auto_incrementcardnochar(20)否購書卡編號cardpasswdchar(20)否購書卡密碼balanceint否卡中所剩余額>10cardlevelchar(8)是購書卡的登記普通卡/銀卡/金卡/鉆石卡cardstatuschar(2)否購書卡狀態(tài)Y(可以被申請)表usercard字段類型NULL說明備注serialint(5)否會員持購書卡的卡序列號auto_incrementuseridchar(30)否會員登錄idcardnochar(20)否購書卡編號對于數(shù)據(jù)表card,插入下列數(shù)據(jù),作為測試數(shù)據(jù)。\o"排序"serial\o"排序"cardno\o"排序"cardpasswd\o"排序"balance\o"排序"cardlevel\o"排序"cardstatus162853966333333100普通卡Y262852966222222500銀卡Y3628519661111111000金卡Y46285096600000010000鉆石卡Y另外,其他表中的數(shù)據(jù),將在測試時產(chǎn)生。注:通過phpMyadmin建立,在MySQL的data文件夾中會自動創(chuàng)建以此數(shù)據(jù)庫為名的文件夾,包含相關(guān)數(shù)據(jù)。3.界面設(shè)計主頁:index.php標(biāo)題行會員名:文本框(20)會員密碼:密碼框(20)登錄(submit)超鏈接:login.php登錄頁:login.php反饋信息(成功或不成功)。注冊頁面1:apply.html包含以下表單,用表格組織新會員id:文本框(20)提示信息購書卡號:文本框(20)提示信息購書卡密碼:密碼框(20)完成(submit)驗(yàn)證頁1:apply.php反饋不合法信息(卡是否可用,密碼是否正確)注冊頁面2:applysrc.html包含以下表單,用表格組織提示行新會員id:回顯變量信息新會員密碼:密碼框(20)*提示信息再次輸入密碼:密碼框(20)*姓名:文本框(20*年齡:文本框(20)性別:文本框(20)郵編:文本框(20)地址:文本框(20)電話號碼:文本框(20)提交(submit)驗(yàn)證頁2:success.php顯示驗(yàn)證注冊的信息四、編碼實(shí)現(xiàn)1.主頁index.php這是會員登錄和注冊的入口。使用HTML標(biāo)記,并使用了JavaScrip腳本語言編寫了對輸入內(nèi)容進(jìn)行了核查的函數(shù)。由于JavaScrip是在客戶端執(zhí)行的,能減少遠(yuǎn)程訪問和處理的時間,提高效率。<HTML> <METAhttp-equiv="Content-Type"content="text/html;charset=gb2312"> <HEAD> <TITLE>登錄與注冊</TITLE> <SCRIPTlanguage="JavaScript">//MARK1 functionjcud() { varcds1=window.frm.userid.value; varcds2=window.frm.password.value; if(cds1=="") { window.alert("會員號不能為空"); window.frm.userid.focus(); } elseif(cds2=="") { window.alert("密碼不能為空"); window.frm.password.focus(); } } </SCRIPT>//MARK1 </HEAD> <BODY> <CENTER> <H1><FONTcolor=blue>歡迎光臨<FONTcolor="#FF00FF">無</FONT><FONTcolor="#00FFFF">涯</FONT><FONTcolor="#00FF00">書</FONT><FONTcolor="#660000">屋</FONT></H1> </CENTER><HR/> <FORMmethod="POST"name="frm"action="login.php">//MARK2 請輸入會員號: <INPUTtype="Text"name="userid"size="20"/> <FONTcolor=red>*</FONT> <BR/> 請輸入密 碼: <INPUTtype="password"name="password"size="21"/> <FONTcolor=red>*</FONT> <P> <INPUTtype="submit"value="登錄"onMouseOver="jcud()"/>//MARK3 </FORM> <HR/> <BR/> <FONTcolor="green">您還不是無涯書屋的會員?</FONT> <BR/> <AHRef="apply.html"><FONTcolor="blue">注冊成為會員</FONT></A> </BODY></HTML>--index.php--代碼解讀1)MARK1:使用JavaScript編寫的輸入驗(yàn)證,即在提交表單時,不允許文本框?yàn)榭铡6鴮T的身份驗(yàn)證還是需要提取數(shù)據(jù)庫中相關(guān)數(shù)據(jù)進(jìn)行判斷,則需要使用服務(wù)器端腳本語言PHP。2)MARK2:active屬性指出了處理表單的程序,即單擊表單中的登錄(submit)按鈕以后,跳轉(zhuǎn)到程序login.php,在程序login.php中將對表單中的數(shù)據(jù)進(jìn)行處理。3)MARK3:當(dāng)觸發(fā)鼠標(biāo)事件onMouseOver時,調(diào)用函數(shù)jcud()檢查各個文本框中的輸入。即當(dāng)鼠標(biāo)移動到登錄按鈕上面時,就發(fā)生了onMouseOver事件,JavaScript自動調(diào)用函數(shù)jcud(),完成效應(yīng)的檢查工作,并返回效應(yīng)的警示框。這里應(yīng)用了指向按鈕發(fā)生在單擊按鈕之前的特性。2.創(chuàng)建新會員頁面apply.html這是會員注冊會員id和購書卡的界面。與主頁類似,也使用HTML標(biāo)記,并使用了JavaScrip,編寫了對文本框輸入不能為空的核查函數(shù)。<HTML> <HEAD> <METAhttp-equiv="Content-Type"content="text/html;charset=gb2312"> <TITLE>輸入會員id</TITLE> <SCRIPTlanguage="JavaScript"> functionjcidd() { varidss=window.frm.userid.value; varcds=window.frm.cardno.value; varpds=window.frm.cardpasswd.value; if(idss=="") { window.alert("新會員id不能為空"); window.frm.userid.focus(); } elseif(idss.length<4||pds.length>30) { window.alert("新會員id長度不合法,請重新輸入"); window.frm.userid.value=""; window.frm.userid.focus(); } elseif(cds=="") { window.alert("購書卡號不能為空"); window.frm.cardno.focus(); } elseif(pds=="") { window.alert("購書卡密碼不能為空"); window.frm.cardpasswd.focus(); } } </SCRIPT> </HEAD> <BODY> <FORMmethod="POST"name="frm"action="apply.php"> <TABLE> <TD>新會員id: <TD><INPUTtype="text"name="userid"size="30"/> <TD><FONTcolor='red'size="-1">(會員id位數(shù)4-30,而且必須有字母與數(shù)字組成)</FONT> <TR><TD>購書卡號: <TD><INPUTtype="text"name="cardno"size="20"/> <TD><FONTcolor='red'size="-1">(你的消費(fèi)金額將會在購物卡中計算)</FONT> <TR><TD>購書卡密碼: <TD><INPUTtype="password"name="cardpasswd"size="20"/> <TR><TD><INPUTtype="submit"value="完成"onMouseOver="jcidd()"> </TABLE> </FORM> </BODY></HTML>--apply.html--3.驗(yàn)證數(shù)據(jù)的正確性頁面apply.php這是驗(yàn)證會員id和購書卡是否合法的界面。由于會員信息記錄在服務(wù)器端,要通過PHP編程實(shí)現(xiàn)驗(yàn)證功能。<? include("sys_conf.inc");//MARK1//建立與SQL數(shù)據(jù)庫的連接//MARK2 $connection=@mysql_connect($DBHOST,$DBUSER,$DBPWD)ordie("無法連接數(shù)據(jù)庫!"); @mysql_query("setnames='gb2312'"); @mysql_select_db("bookshop")ordie("無法選擇數(shù)據(jù)庫!"); //向數(shù)據(jù)庫發(fā)送查詢請求 $query="SELECT*FROMusercardWHEREuserid='$userid'"; $result=@mysql_query($query,$connection)ordie("瀏覽失敗!"); //讀取記錄數(shù)據(jù),分類保存 if($row=mysql_fetch_array($result))//MARK3 { echo"<CENTER>該會員id已經(jīng)被人使用,請重新填寫<BR>"; echo"<INPUTtype=buttonvalue='返回'onclick=history.back();></CENTER>"; } else { $query="SELECT*FROM`card`WHEREcardno='$cardno'"; $result=@mysql_query($query,$connection)ordie("瀏覽失?。?);@mysql_close($connection)ordie("關(guān)閉數(shù)據(jù)庫失?。?); if($row1=mysql_fetch_array($result)) { if($row1[cardstatus]=="N") { echo"<CENTER>該卡不能使用!<BR>"; echo"<INPUTtype=buttonvalue='返回'onclick=history.back();></CENTER>"; } elseif($row1[cardpasswd]==$cardpasswd) { include("applysrc.html"); } else { echo"<CENTER>密碼錯誤,請重新輸入!<BR>"; echo"<INPUTtype=buttonvalue='返回'onclick=history.back();></CENTER>"; } } else { echo"<CENTER>不存在該卡號,請重新輸入!<BR>"; echo"<INPUTtype=buttonvalue='返回'onclick=history.back();></CENTER>"; } }?>--apply.php--代碼解讀1)MARK1:使用include()函數(shù)把數(shù)據(jù)庫服務(wù)器配置變量文件包括在程序中。include()函數(shù)。代碼中包含了公共文件sys_conf.inc,用于設(shè)置系統(tǒng)使用的數(shù)據(jù)庫全局變量。<!--sys_conf.inc:系統(tǒng)配置文件--><?php//數(shù)據(jù)庫配置全局變量$DBHOST="localhost";$DBUSER="root";$DBPWD="";?>2)MARK2:使用了一組PHP的MySQL函數(shù)鏈接數(shù)據(jù)庫服務(wù)器、打開數(shù)據(jù)庫bookshop、通過執(zhí)行SQL命令,獲取數(shù)據(jù)表usercard中與正在注冊的會員相關(guān)的記錄。其中函數(shù)@mysql_query("setnames='gbk'")執(zhí)行的SQL語句是設(shè)置MySQL處理數(shù)據(jù)的字符集,使得正文能正常顯示。3)MARK3:這段代碼實(shí)現(xiàn)對數(shù)據(jù)的驗(yàn)證,算法是:若獲取的記錄不空(即注冊的會員號已存在于數(shù)據(jù)表usercard中) 提示:該會員id已經(jīng)被人使用,請重新填寫 返回注冊頁面否則(即注冊的會員號不存在于數(shù)據(jù)表usercard中) (進(jìn)一步判斷購書卡是否合法) 獲取數(shù)據(jù)表card中與正在注冊的購書卡相關(guān)的記錄 若獲取的記錄不空(即正在注冊的購書卡已存在于數(shù)據(jù)表card中) 若正在注冊的購書卡不可用(數(shù)據(jù)表card的cardstatus字段為“N”) 提示:該卡不能使用! 返回注冊頁面 否則(即注冊的購書卡可用) 若輸入的密碼與卡內(nèi)預(yù)設(shè)的密碼相同(驗(yàn)證密碼) 進(jìn)入會員資料錄入界面 否則提示:密碼錯誤,請重新輸入!返回注冊頁面 否則(若獲取的記錄空(即正在注冊的購書卡不存在于數(shù)據(jù)表card中)) 提示:不存在該卡號,請重新輸入!返回注冊頁面4)這段代碼中用到的SQL命令命令格式含義setnames'gb2312'設(shè)置字符處理集為gb2312SELECT*FROMusercardWHEREuserid='$userid'獲取數(shù)據(jù)表usercard中的字段userid為前一頁面表單中輸入會員id的所有記錄SELECT*FROM`card`WHEREcardno='$cardno'獲取數(shù)據(jù)表card中的字段cardno為前一頁面表單中輸入購書卡號的所有記錄5)這段代碼中用到用到的變量變量名取值含義$connection整數(shù),標(biāo)識連接數(shù)據(jù)庫的句柄記錄鏈接數(shù)據(jù)庫是否成功$querySQL命令記錄查詢數(shù)據(jù)表的SQL命令$result查詢數(shù)據(jù)集記錄執(zhí)行SQL命令后的返回結(jié)果$row,$row1數(shù)組記錄查詢數(shù)據(jù)集中的一條記錄$userid字符串記錄前一頁面表單中輸入會員id$cardno字符串記錄前一頁面表單中輸入購書卡號$cardpasswd字符串記錄前一頁面表單中輸入購書卡密碼6)這段代碼中用到用到的函數(shù)函數(shù)用法含義mysql_connect()三個參數(shù)分別是服務(wù)器名,會員名,會員密碼連接到指定的數(shù)據(jù)庫服務(wù)器上,訪問會員建立的數(shù)據(jù)庫die()參數(shù)取字符串型返回字符串的信息,錯誤警報mysql_query()參數(shù)為SQL命令執(zhí)行SQL命令mysql_select_db()參數(shù)為數(shù)據(jù)庫名打開數(shù)據(jù)庫文件mysql_close()參數(shù)為標(biāo)識連接數(shù)據(jù)庫的句柄關(guān)閉數(shù)據(jù)庫文件mysql_fetch_array()參數(shù)為字符串以數(shù)組返回查詢數(shù)據(jù)集中的記錄4.新會員資料填寫頁面applysrc.html這是會員注冊會員id和購書卡的界面。與主頁類似,也使用HTML標(biāo)記,并使用了JavaScrip,編寫了對文本框輸入不能為空進(jìn)行核查的函數(shù)。這里表單處理程序?yàn)閟uccess.php。<HTML> <METAhttp-equiv="Content-Type"content="text/html;charset=gb2312"> <HEAD> <TITLE>新會員申請</TITLE> <SCRIPTlanguage="JavaScript"> functionpdsr() { varpds=window.frm.password.value; varpds1=window.frm.passwd1.value; varnm=window.frm.username.value; if(pds=="") { window.alert("密碼不能為空"); window.frm.password.focus(); } elseif(pds.length<6||pds.length>20) { window.alert("密碼長度不合法,請重新輸入"); window.frm.password.value=""; window.frm.password.focus(); } elseif(pds1!=window.frm.password.value) { window.alert("兩次密碼輸入不匹配,請重新輸入"); window.frm.passwd1.value=""; window.frm.passwd1.focus(); } elseif(nm=="") { window.alert("姓名不能為空"); window.frm.username.focus(); } } </SCRIPT> </HEAD> <BODY> 帶*的選項(xiàng)是必須填寫的 <FORMmethod="POST"name="frm"action="success.php"> <TABLE> <TR><TDalign=right>新會員id: <!--顯示前面填寫的新會員id--> <TD><?echo$userid;?> <TR><TDalign=right>新會員密碼: <TD><INPUTtype="password"name="password"size="20"/><FONTcolor=red>*</FONT> <TD><FONTcolor='red'size="-1">(會員密碼位數(shù)6-20,而且必須由字母與數(shù)字組成)</FONT> <TR> <!--輸入兩次密碼以確保密碼輸入無誤--> <TDalign=right>再次輸入密碼: <TD><INPUTtype="password"size="20"name="passwd1"/><FONTcolor=red>*</FONT> <TR><TDalign=right>姓名: <TD><INPUTtype="text"size="20"name="username"/><FONTcolor=red>*</FONT> <TR><TDalign=right>年齡: <TD><INPUTtype="text"size="5"name="age"value="<?echo$age;?>"> <TR><TDalign=right>性別: <TD><INPUTtype="text"size="2"name="sex"value="<?echo$sex;?>"> <TR><TDalign=right>郵編: <TD><INPUTtype="text"size="20"name="post1"value="<?echo$post1;?>"> <TR><TDalign=right>地址: <TD><INPUTtype="text"name="addr"size="20"value="<?echo$addr;?>"> <TR><TDalign=right>電話號碼: <TD><INPUTtype="text"name="phone"size="20"value="<?echo$phone;?>"/> <TR><TD><INPUTtype="submit"value="提交"onMouseOver="pdsr()"/> <!--保存前面?zhèn)鬟f的數(shù)值到隱藏區(qū)域,以傳遞下一個程序--> <TD><INPUTtype="hidden"name="id"value="<?echo$userid;?>"> <TD><INPUTtype="hidden"name="card"value="<?echo$cardno;?>"> <TD><INPUTtype="hidden"name="cash"value="<?echo$row[balance];?>"> </TABLE> </FORM> </BODY></HTML>--applysrc.html--5.創(chuàng)建新會員頁面success.php這是創(chuàng)建新會員頁面。需要通過PHP編程實(shí)現(xiàn)把會員信息存儲在服務(wù)器端數(shù)據(jù)庫中的功能。<HTML> <HEAD> <title>注冊成功</title> </HEAD> <BODYlink='blue'vlink='blue'alink='#990033'> <? include("sys_conf.inc");//MARK1 //建立與SQL數(shù)據(jù)庫的連接 $connection=@mysql_connect($DBHOST,$DBUSER,$DBPWD)ordie("無法連接數(shù)據(jù)庫!"); @mysql_query("setnames'gb2312'"); @mysql_select_db("bookshop")ordie("無法選擇數(shù)據(jù)庫!"); //建立會員id和購物卡號的聯(lián)系//MARK2 $query="INSERTINTOusercard(userid,cardno)VALUES('$id','$card')"; $result=@mysql_query($query,$connection)ordie("存入數(shù)據(jù)庫失?。?); //修改卡號狀態(tài) $query="UPDATEcardSETcardstatus='N'WHEREcardno='$card'"; $result=@mysql_query($query,$connection)ordie("存入數(shù)據(jù)庫失??!"); //建立新會員身份$time=Date("Y")."年".Date("n")."月".Date("j")."日".Date("G").":".Date("i"); $query="INSERTINTOuserdata(userid,username,password,age,sex,addr,post,phone,createtime)"; $query.="VALUES('$id','$username','$password','$age','$sex','$addr','$post1','$phone','$time')"; $result=@mysql_query($query,$connection)ordie("存入數(shù)據(jù)庫失??!"); mysql_close($connection)ordie("關(guān)閉數(shù)據(jù)庫失敗!"); //顯示申請成功信息//MARK3 echo"<FONTsize=+3><CENTER>恭喜您已經(jīng)完成所有申請手續(xù)??!</CENTER> <CENTER>歡迎您常來書屋品書?。?lt;/CENTER> <BR><HR> 您的會員名為:$id<BR> 購書卡號:$card<BR> 可用金額:$cash元<BR> <aHRef='index.php'>請登錄到無涯書屋!</a> </FONT>"; ?> </BODY></HTML>--success.php--代碼解讀1)MARK1:同apply.php2)MARK2:分別對數(shù)據(jù)表進(jìn)行了數(shù)據(jù)變更。首先,在數(shù)據(jù)表usercard中,插入了新會員的注冊會員id和購書卡記錄;接著,在數(shù)據(jù)表card中,把購書卡的狀態(tài)設(shè)置為不可用;最后,在數(shù)據(jù)表userdata中,插入了新會員的注冊資料記錄。3)MARK3:顯示申請成功信息。4)這段代碼中用到的SQL命令命令格式含義INSERTINTOusercard(userid,cardno)VALUES('$id','$card')插入記錄(新會員的注冊會員id和購書卡)到數(shù)據(jù)表usercard中UPDATEcardSETcardstatus='N'WHEREcardno='$card'更新數(shù)據(jù)表card中指定購書卡號的購書卡狀態(tài)為不可用INSERTINTOuserdata(userid,username,password,age,sex,addr,post,phone,reatetime)VALUES('$id','$username','$password','$age','$sex','$addr','$post1','$phone',CURTIME)插入記錄(新會員的注冊資料)到數(shù)據(jù)表userdata中5)這段代碼中用到用到的變量變量名取值含義$connection整數(shù),標(biāo)識連接數(shù)據(jù)庫的句柄記錄鏈接數(shù)據(jù)庫是否成功$querySQL命令記錄查詢數(shù)據(jù)表的SQL命令$result查詢數(shù)據(jù)集記錄執(zhí)行SQL命令后的返回結(jié)果$userid字符串記錄前一頁面表單中輸入會員id$cardno字符串記錄前一頁面表單中輸入購書卡號$id,$username$password,$age$sex,$addr,$post1,$phone字符串記錄前一頁面表單中輸入會員資料6)這段代碼中用到用到的函數(shù)函數(shù)用法含義mysql_connect()三個參數(shù)分別是服務(wù)器名,會員名,會員密碼連接到指定的數(shù)據(jù)庫服務(wù)器上,訪問會員建立的數(shù)據(jù)庫die()參數(shù)取字符串型返回字符串的信息,錯誤警報mysql_query()參數(shù)為SQL命令執(zhí)行SQL命令mysql_select_db()參數(shù)為數(shù)據(jù)庫名打開數(shù)據(jù)庫文件mysql_close()參數(shù)為標(biāo)識連接數(shù)據(jù)庫的句柄關(guān)閉數(shù)據(jù)庫文件6.會員身份驗(yàn)證頁面login.php這是會員身份驗(yàn)證頁面。需要通過PHP編程實(shí)現(xiàn)把登錄的信息與記錄在服務(wù)器端的原有信息進(jìn)行對比來判斷是否會員。<? session_start();//MARK1 include("sys_conf.inc");//建立與SQL數(shù)據(jù)庫的連接 $connection=@mysql_connect($DBHOST,$DBUSER,$DBPWD)ordie("無法連接數(shù)據(jù)庫!"); @mysql_select_db("bookshop")ordie("無法選擇數(shù)據(jù)庫!"); $query="SELECT*FROMuserdataWHEREuserid='$userid'"; $result=@mysql_query($query,$connection)ordie("數(shù)據(jù)請求失?。?); if($row=mysql_fetch_array($result))//MARK2 { if($row[password]==$password) { //身份認(rèn)證成功 $query="SELECT*FROMusercardWHEREuserid='$userid'"; $result1=@mysql_query($query,$connection)ordie("數(shù)據(jù)請求失??!"); if($rowc=mysql_fetch_array($result)) { $query="SELECT*FROMcardWHEREcardno='$rowc[cardno]'"; $result2=@mysql_query($query,$connection)ordie("數(shù)據(jù)請求失??!"); mysql_close($connection)ordie("關(guān)閉數(shù)據(jù)庫失敗!"); $rowcc=mysql_fetch_array($result); if($rowcc[balance]<10) { echo"<CENTER>該卡中余額不足10元,請向卡內(nèi)注資或使用其他卡!<BR>"; echo"<INPUTtype=buttonvalue='返回'onclick=history.back();></CENTER>"; } else { $_SESSION['userid']=$_POST['userid'];//MARK3 echo"<CENTER><aHRef='showbook.php'>祝您愉快購書!</a></CENTER>"; } } } else { echo"<CENTER>密碼不正確,請重新輸入<BR>"; echo"<INPUTtype=buttonvalue='返回'onclick=history.back();></CENTER>"; } } else { echo"<CENTER>不存在該會員id,請注冊為新會員<BR>"; echo"<INPUTtype=buttonvalue='返回'onclick=history.back();></CENTER>"; }?>--login.php--代碼解讀1)MARK1:session_start();創(chuàng)建會話,要把在登錄的變量(會員id)作為會話變量,使所有頁面共享,就必須先創(chuàng)建會話,這個函數(shù)一定要緊跟在<?php之后,注意以下代碼中不能含有空行。2)MARK2:驗(yàn)證登錄者是否會員,算法如下:首先,讀取數(shù)據(jù)表userdata中的與登錄者輸入的會員id相同的所有記錄,進(jìn)行判斷。若讀取的記錄不空(即登錄者輸入的會員號存在于表use
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 本科護(hù)理學(xué)試題及答案
- 保安證培訓(xùn)試題及答案
- 大數(shù)據(jù)驅(qū)動的職業(yè)病防治資源需求動態(tài)預(yù)測模型
- 大數(shù)據(jù)背景下樣本隱私保護(hù)策略
- 大數(shù)據(jù)醫(yī)療分析的患者隱私保護(hù)框架
- 多胎妊娠的圍產(chǎn)期疼痛管理策略
- 多聯(lián)mRNA疫苗:簡化接種策略創(chuàng)新
- 2025年中職體育教育(體育教育基礎(chǔ))試題及答案
- 2025年中職農(nóng)資營銷與服務(wù)(農(nóng)資機(jī)械操作)試題及答案
- 2025年中職康復(fù)治療(康復(fù)工程基礎(chǔ))試題及答案
- 2026年貨物運(yùn)輸合同標(biāo)準(zhǔn)模板
- 2026年廣州市民政局直屬事業(yè)單位第一次公開招聘工作人員25人備考題庫及1套參考答案詳解
- 廣西壯族自治區(qū)南寧市2025-2026學(xué)年七年級上學(xué)期期末語文綜合試題
- 2024VADOD臨床實(shí)踐指南:耳鳴的管理解讀課件
- 2025中國航空集團(tuán)建設(shè)開發(fā)有限公司高校畢業(yè)生校園招聘5人筆試參考題庫附帶答案詳解(3卷合一)
- 2025年山東畜牧獸醫(yī)職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 貴州國企招聘:2026貴州貴陽花溪智聯(lián)數(shù)智科技服務(wù)有限公司招聘9人參考題庫附答案
- 1104報表基礎(chǔ)報表、特色報表填報說明v1
- 鋁材銷售溝通話術(shù)技巧
- 第一單元寫作:考慮目的和對象 教學(xué)課件
- 民族打擊樂器教學(xué)內(nèi)容課件
評論
0/150
提交評論