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

正文內(nèi)容

博客網(wǎng)站系統(tǒng)設計說明書-資料下載頁

2025-08-03 01:29本頁面
  

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