freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

博客網(wǎng)站系統(tǒng)設(shè)計(jì)說(shuō)明書-資料下載頁(yè)

2025-08-03 01:29本頁(yè)面
  

【正文】 ,其他的模版調(diào)用方法相同。:tr td名字/td tdinput type=text name=user_last_name value={user_last_name} //td /tr tr td姓氏/td tdinput type=text name=user_first_name value={user_first_name} //td /tr以上只給出部分代碼,只是用于說(shuō)明,下面給出PEAR調(diào)用模板的代碼如下:?php //加載PEAR模板庫(kù) include_once 39。HTML/Template/39。 //指明被調(diào)用模板存放的目錄,并初始化模板對(duì)象$tpl = new HTML_Template_IT(39。./templates39。)。 //,并忽略無(wú)效標(biāo)記$tplloadTemplatefile(39。39。, true, true)。//$query_row是從數(shù)據(jù)庫(kù)中取得的數(shù)據(jù),其key作為數(shù)據(jù)庫(kù)表中的//字段,其value值就為字段所對(duì)應(yīng)的值$tplsetVariable(39。user_last_name39。,$query_row[39。user_last_name39。])。$tplsetVariable(39。user_first_name39。,$query_row[39。user_first_name39。])。//輸出解析后的模板$tplshow()。?可以看出以上方法中最為重要的就是setVariable方法,這個(gè)方法接受兩個(gè)參數(shù),第一個(gè)參數(shù)為模板中待解析的變量名,即被包含在“{”和“}”之間的變量,第二個(gè)參數(shù)是要解析成的數(shù)據(jù)或名稱,以上為例,$query_row是數(shù)據(jù)庫(kù)查詢后的數(shù)組信息,在數(shù)據(jù)庫(kù)查詢完成后,就可以將信息依次寫入模板,一次性輸出,這樣可以避免php代碼和html代碼混雜,使邏輯更清晰,另外可以使美工和php代碼的編寫者分工協(xié)作,提高效率,目前已經(jīng)出現(xiàn)了很多流行的MVC框架,比如cakePHP、phpLIB、smarty等,對(duì)于小型的應(yīng)用,我認(rèn)為用PEAR提供的模板就很好了。八大模塊除了登陸模塊外我都使用了模板技術(shù),就不在贅述了,下面我給出數(shù)據(jù)庫(kù)查詢的設(shè)計(jì),后面我將介紹登陸模塊的設(shè)計(jì)。 數(shù)據(jù)庫(kù)查詢對(duì)于MySQL數(shù)據(jù)庫(kù)的查詢,PHP提供兩種方式,首先是面向過(guò)程的方法,其次是面向?qū)ο蟮姆椒?,在本次的設(shè)計(jì)中,我一律采用面向?qū)ο蟮姆椒ǎ獙?shí)現(xiàn)PHP對(duì)MySQL數(shù)據(jù)庫(kù)面相對(duì)象的支持,“。extension=”前的分號(hào)去掉,保存然后重啟服務(wù)器重新加載即可,另外php提供了pdo的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),這是更高級(jí)的方法,這里不再贅述,下面講解mysqli的具體用法。 mysqli是php mysql庫(kù)的擴(kuò)展,mysqli不僅是面向?qū)ο蟮?,而且mysql是非持繼連接函數(shù)而mysqli是永遠(yuǎn)連接函數(shù)。也就是說(shuō)mysql每次鏈接都會(huì)打開(kāi)一個(gè)連接的進(jìn)程而mysqli多次運(yùn)行mysqli將使用同一連接進(jìn)程,從而減少了服務(wù)器的開(kāi)銷。下面給出mysqli查詢數(shù)據(jù)庫(kù)的代碼: ?php//數(shù)據(jù)庫(kù)服務(wù)器為本地define(39。DBHOST39。,39。localhost39。)。 //數(shù)據(jù)庫(kù)用戶define(39。DBUSER39。,39。root39。)。 //數(shù)據(jù)庫(kù)密碼define(39。DBPWD39。,39。12345639。)。 //數(shù)據(jù)庫(kù)名稱define(39。DBNAME39。,39。leoblog39。)。 //建立數(shù)據(jù)庫(kù)連接對(duì)象$dblink=new mysqli(DBHOST,DBUSER,DBPWD,DBNAME)。 //檢查數(shù)據(jù)庫(kù)連接 if(mysqli_connect_errno()) { printf(數(shù)據(jù)庫(kù)鏈接錯(cuò)誤:%s,mysqli_connect_error())。 exit()。 } //設(shè)置數(shù)據(jù)庫(kù)查詢字符集,防止出現(xiàn)亂碼 $dblinkquery(39。set names utf839。)。 $sql=select * from user。 //查詢并返回結(jié)果 $query_result=$dblinkquery($sql)。 $query_row=$query_resultfetch_assoc()。 //將查詢出的一行記錄打印出來(lái)print_r($query_row)。?很多情況是要遍歷查詢結(jié)果的每一條記錄,可以這樣寫:?php while($query_row=$query_resultfetch_assoc()) { //輸出記錄中的信息 }?在本次設(shè)計(jì)中數(shù)據(jù)庫(kù)的查詢都是采用這種方法,可以將以上代碼保存為一個(gè)公用的php文件,待需要時(shí)可以隨時(shí)包含進(jìn)來(lái),不僅減少了編碼量,而且方便調(diào)用和修改,可以看出來(lái)php對(duì)mysql的查詢操作很方便。 后臺(tái)登陸后臺(tái)登陸的安全性是網(wǎng)站建設(shè)中的中心環(huán)節(jié),后臺(tái)登陸的主要思想是驗(yàn)證登陸用戶是否為合法用戶,如果是則創(chuàng)建session登陸成功,不是則給出錯(cuò)誤信息,允許再次輸入并重新登陸。但是這里有個(gè)重要問(wèn)題,就是“安全”,為防止用戶暴力破解和sql注入,應(yīng)該對(duì)登錄次數(shù)做限制,并且應(yīng)對(duì)登陸提交信息進(jìn)行檢查,過(guò)濾非法字符串。Php提供了魔術(shù)引號(hào)的功能,默認(rèn)情況下是關(guān)閉的,“magic_quotes_gpc = Off”改為“magic_quotes_gpc = On”,然后重啟服務(wù)器即可打開(kāi)魔術(shù)引號(hào),他可以有效的降低sql注入,利用php創(chuàng)建session也非常方便,首先對(duì)session簡(jiǎn)要介紹下。session機(jī)制是一種服務(wù)器端的機(jī)制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來(lái)保存信息。當(dāng)程序需要為某個(gè)客戶端的請(qǐng)求創(chuàng)建一個(gè)session的時(shí)候,服務(wù)器首先檢查這個(gè)客戶端的請(qǐng)求里是否已包含了一個(gè)session標(biāo)識(shí) 稱為session id,如果已包含一個(gè)session id則說(shuō)明以前已經(jīng)為此客戶端創(chuàng)建過(guò)session,服務(wù)器就按照session id把這個(gè)session檢索出來(lái)使用(如果檢索不到,可能會(huì)新建一個(gè)),如果客戶端請(qǐng)求不包含session id,則為此客戶端創(chuàng)建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的session id,session id的值應(yīng)該是一個(gè)既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個(gè)session id將被在本次響應(yīng)中返回給客戶端保存。下面給出登陸模塊的簡(jiǎn)要代碼:?php if(empty($_POST)) { //如果提交數(shù)據(jù)為空則轉(zhuǎn)到首頁(yè)header(Location:)。 exit()。 } //數(shù)據(jù)庫(kù)配置信息include_once 39。39。 //獲得提交數(shù)據(jù)$post=$_POST。 foreach($post as $key = $value) { //對(duì)提交的數(shù)據(jù)進(jìn)行過(guò)濾 //這里可以添加更多操作$value=trim($value)。 $post[$key]=$value。 } //得到用戶名和密碼的MD5散列 $username=$post[39。username39。]。 $userpwd=md5($post[39。userpwd39。])。 //sql查詢語(yǔ)句$sql=select * from user where user_name=39。$username39。 and user_password=39。$userpwd39。//轉(zhuǎn)義非法字串 $dblinkreal_escape_string($sql)。 if($query_result=$dblinkquery($sql)) { if($query_resultnum_rows==0) { //登陸失敗echo 39。用戶名或密碼錯(cuò)誤39。 exit()。 } if($query_resultnum_rows==1) { //登陸成功,創(chuàng)建session //啟動(dòng)會(huì)話 session_start()。 $_SESSION[39。admin39。]=true。//獲得登陸ip $userloginip=$_SERVER[39。REMOTE_ADDR39。]。 //更新數(shù)據(jù)庫(kù) $sql=update user set user_last_login_ip=39。$userloginip39。,user_last_login_date=now() where user_name=39。$username39。 and user_password=39。$userpwd。 if($dblinkquery($sql)) { if($dblinkaffected_rows==0) { //數(shù)據(jù)更新錯(cuò)誤 $_SESSION[39。admin39。]=false。 echo 數(shù)據(jù)庫(kù)查詢異常。 exit()。 } } else { //這里可以添加其他操作 } } } else { echo 39。數(shù)據(jù)庫(kù)查詢異常39。 //這里可以添加其他操作 }?以上只是登陸頁(yè)面簡(jiǎn)要的代碼,創(chuàng)建session很簡(jiǎn)單,只需要注明session_start(),然后對(duì)$_SESSION全局?jǐn)?shù)組進(jìn)行操作即可。在登陸時(shí)出于較好的瀏覽體驗(yàn),任何錯(cuò)誤都不會(huì)導(dǎo)致頁(yè)面刷新,這采用了ajax機(jī)制,即將待處理的數(shù)據(jù)異步(不刷新)提交給處理頁(yè)面,再將處理后的結(jié)果返回給調(diào)用頁(yè)面,調(diào)用頁(yè)面根據(jù)返回的結(jié)果處理當(dāng)前頁(yè),下面將介紹ajax和jquery框架。 Ajax和JQuery框架 Ajax是什么AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。AJAX的最大機(jī)遇在于用戶體驗(yàn)。在使應(yīng)用更快響應(yīng)和創(chuàng)新的過(guò)程中,定義Web應(yīng)用的規(guī)則正在被重寫。因此開(kāi)發(fā)人員必須更注重用戶?,F(xiàn)在用戶已經(jīng)逐漸習(xí)慣如何使用Web應(yīng)用了。例如用戶通常希望每一次按鈕點(diǎn)擊會(huì)導(dǎo)致幾秒的延遲和屏幕刷新,但AJAX正在打破這種長(zhǎng)時(shí)間的狀況。因此用戶需要重新體驗(yàn)按鈕點(diǎn)擊的響應(yīng)了。如名字所示AJAX的概念中最重要而最被忽視的是他也是一種JavaScript編程語(yǔ)言。JavaScript是一種粘合劑使AJAX應(yīng)用的各部分集成在一起。在大部分時(shí)間,JavaScript通常被服務(wù)端開(kāi)發(fā)人員認(rèn)為是一種企業(yè)級(jí)應(yīng)用不需要使用的東西應(yīng)該盡力避免。這種觀點(diǎn)來(lái)來(lái)自以前編寫JavaScript代碼的經(jīng)歷:繁雜而又易出錯(cuò)的語(yǔ)言。類似的,他也被認(rèn)為將應(yīng)用邏輯任意地散布在服務(wù)端和客戶端中,這使得問(wèn)題很難被發(fā)現(xiàn)而且代碼很難重用。在AJAX中JavaScript主要被用來(lái)傳遞用戶界面上的數(shù)據(jù)到服務(wù)端并返回結(jié)果。XMLHttpRequest對(duì)象用來(lái)響應(yīng)通過(guò)HTTP傳遞的數(shù)據(jù),一旦數(shù)據(jù)返回到客戶端就可以立刻使用DOM將數(shù)據(jù)放到網(wǎng)面上。 Ajax優(yōu)點(diǎn)和缺點(diǎn)傳統(tǒng)的web應(yīng)用允許用戶填寫表單(form),當(dāng)提交表單時(shí)就向web服務(wù)器發(fā)送一個(gè)請(qǐng)求。服務(wù)器接收并處理傳來(lái)的表單,然後返回一個(gè)新的網(wǎng)頁(yè)。這個(gè)做法浪費(fèi)了許多帶寬,因?yàn)樵谇搬醿蓚€(gè)頁(yè)面中的大部分HTML代碼往往是相同的。由于每次應(yīng)用的交互都需要向服務(wù)器發(fā)送請(qǐng)求,應(yīng)用的響應(yīng)時(shí)間就依賴于服務(wù)器的響應(yīng)時(shí)間。這導(dǎo)致了用戶界面的響應(yīng)比本地應(yīng)用慢得多?! ∨c此不同,AJAX應(yīng)用可以僅向服務(wù)器發(fā)送并取回必需的數(shù)據(jù),它使用SOAP或其它一些基于XML的web service接口,并在客戶端采用JavaScript處理來(lái)自服務(wù)器的響應(yīng)。因?yàn)樵诜?wù)器和瀏覽器之間交換的數(shù)據(jù)大量減少,結(jié)果我們就能看到響應(yīng)更快的應(yīng)用。同時(shí)很多的處理工作可以在發(fā)出請(qǐng)求的客戶端機(jī)器上完成,所以Web服務(wù)器的處理時(shí)間也減少了?! ∈褂肁jax的最大優(yōu)點(diǎn),就是能在不更新整個(gè)頁(yè)面的前提下維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地回應(yīng)用戶動(dòng)作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒(méi)有改變過(guò)的信息。  Ajax不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執(zhí)行。就像DHTML應(yīng)用程序那樣,Ajax應(yīng)用程序必須在眾多不同的瀏覽器和平臺(tái)上經(jīng)過(guò)嚴(yán)格的測(cè)試。隨著Ajax的成熟,一些簡(jiǎn)化Ajax使用方法的程序庫(kù)也相繼問(wèn)世。同樣,也出現(xiàn)了另一種輔助程序設(shè)計(jì)的技術(shù),為那些不支持JavaScript的用戶提供替代功能?! ?duì)應(yīng)用Ajax最主要的批評(píng)就是,它可能破壞瀏覽器后退按鈕的正常行為。在動(dòng)態(tài)更新頁(yè)面的情況下,用戶無(wú)法回到前一個(gè)頁(yè)面狀態(tài),這是因?yàn)闉g覽器僅能記下歷史記錄中的靜態(tài)頁(yè)面。一個(gè)被完整讀入的頁(yè)面與一個(gè)已經(jīng)被動(dòng)態(tài)修改過(guò)的頁(yè)面之間的差別非常微妙;用戶通常都希望單擊后退按鈕,就能夠取消他們的前一次操作,但是在Ajax應(yīng)用程序中,卻無(wú)法這樣做。不過(guò)開(kāi)發(fā)者已想出了種種辦法來(lái)解決這個(gè)問(wèn)題,當(dāng)中大多數(shù)都是在用戶單擊后退按鈕訪問(wèn)歷史記錄時(shí),通過(guò)建立或使用一個(gè)隱藏的IFRAME來(lái)重現(xiàn)頁(yè)面上的變更。(例如,當(dāng)用戶在Google Maps中單擊后退時(shí),它在一個(gè)隱藏的IFRAME中進(jìn)行搜索,然后將搜索結(jié)果反映到Ajax元素上,以便將應(yīng)用程序狀態(tài)恢復(fù)到當(dāng)時(shí)的狀態(tài)。)  一個(gè)相關(guān)的觀點(diǎn)認(rèn)為,使用動(dòng)態(tài)頁(yè)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1