2023-12-03 分類: 網(wǎng)站建設(shè)
1、server會(huì)依據(jù)文件的后綴名去進(jìn)行解析,假設(shè)是HTML文件則server不會(huì)進(jìn)行語法解析。而是直接輸出到瀏覽器。 2、假設(shè)一個(gè)頁面中所有都是HTML代碼而沒有須要解析的pHp語法,則沒有必要保存為pHp文件,這樣反而會(huì)減少執(zhí)行效率。3、假設(shè)是須要pHp控制HTML代碼的輸出,比方須要pHp推斷用戶是否登陸,假設(shè)登陸則輸出A,未登錄則輸出b。這就須要pHp來進(jìn)行控制了。HTML不能實(shí)現(xiàn)這種功能
pHp生成靜態(tài)頁面教程,一些主要概念
一,pHp 腳本和動(dòng)態(tài)頁面。
pHp 腳本是一個(gè)結(jié)束腳本程序,可以通過嵌入等方式與 HTML 文件混合。也可以歸類。功能包裝等形式。以模板的形式處理用戶請求。
無論如何,它的基本原理是這樣的。通過發(fā)出請求,請求某個(gè)頁面----->引入指定的對應(yīng)腳本進(jìn)行處理----->腳本被加載----->腳本被指定的pHp解析器解析形成HTML語言形式- --->解析后的HTML語句以包的形式發(fā)回瀏覽器。
不難看出,頁面發(fā)送到瀏覽器后,pHp 就不復(fù)存在了。已轉(zhuǎn)換并解析為 HTML 語句??蛻舳苏埱笫且粋€(gè)動(dòng)態(tài)文件。事實(shí)上php代碼怎么放到html,那里不存在真正的文件。由pHp解析形成相應(yīng)的頁面,然后發(fā)送回瀏覽器。
這種頁面處理方式稱為“動(dòng)態(tài)頁面”。
兩個(gè)。靜態(tài)頁面。
靜態(tài)頁面是指只包含最后確實(shí)存在的HTML、JS、CSS等執(zhí)行腳本的頁面。
它的處理方式是。按要求。請求頁面 ----> 確認(rèn)并加載頁面 ----> 將頁面以包的形式傳回瀏覽器。
從這個(gè)過程,我們來對比一下動(dòng)態(tài)頁面。你現(xiàn)在可以。動(dòng)態(tài)頁面需要通過pHp解析器進(jìn)行解析,通常需要連接數(shù)據(jù)庫進(jìn)行數(shù)據(jù)庫訪問操作。然后就可以形成HTML語言信息包。靜態(tài)頁面不需要解析或連接數(shù)據(jù)庫直接發(fā)送,可以大大降低壓力,提高負(fù)載能力。顯著提供頁面打開速度和網(wǎng)站整體打開速度。但它的缺點(diǎn)是不能動(dòng)態(tài)處理請求,而且文件必須實(shí)際存在于其上。
三個(gè)。模板和模板分析。模板尚未填充內(nèi)容 html 文件。例如:
temp.html
代碼:
{ title } this is a { file } file's templets pHp處理: templetest.php Code: $title = "拓邁國際測試模板"; $file = "TwoMax Inter test templet, author:Matrix@Two_Max"; $fp = fopen ("temp.html","r"); $content = fread ($fp,filesize ("temp.html")); $content .= str_replace ("{ file }",$file,$content); $content .= str_replace ("{ title }",$title,$content); echo $content; ?>
模板解析處理是將pHp腳本解析處理后得到的結(jié)果填充()到模板中的過程。通常在模板類的幫助下。目前比較流行的模板解析類是。還有很多。模板分析處理的原則通常是替換。一些程序員習(xí)慣于將推理、循環(huán)和其他處理放入模板文件中。使用解析類來處理,典型的應(yīng)用是一個(gè)概念,簡單來說就是一個(gè)循環(huán)處理。
pHp 腳本指定循環(huán)次數(shù)、如何循環(huán)替換等,然后模板解析類詳細(xì)實(shí)現(xiàn)這些操作。
好吧,我已經(jīng)比較了靜態(tài)和動(dòng)態(tài)頁面的優(yōu)缺點(diǎn)。現(xiàn)在讓我們談?wù)勊?。如何用pHp生成靜態(tài)文件。
pHp 生成靜態(tài)頁面,不代表 pHp 的動(dòng)態(tài)分析和 HTML 頁面的輸出。它是指用 pHp 創(chuàng)建 HTML 頁面。
同時(shí),由于HTML的不可寫性,如果我們創(chuàng)建的HTML發(fā)生變化,我們需要將其刪除并重新生成。 (當(dāng)然你也可以選擇使用正則進(jìn)行修改,但個(gè)人覺得還是刪掉重新生成比較好。有些得不償失。)
回到正題。用過pHp文件操作函數(shù)的pHp愛好者都知道。 pHp 中有一個(gè)文件操作函數(shù)。文件被打開。如果文件不存在,請嘗試創(chuàng)建。
這是pHp可以用來創(chuàng)建HTML文件的理論基礎(chǔ)。只有用來存放HTML文件的文件夾才有寫權(quán)限(即權(quán)限定義0777)??梢詣?chuàng)建文件。(對于UNIX系統(tǒng),Win系統(tǒng)不需要考慮。)以上面的例子為例,如果我們修改最后一句,指定在test文件夾下生成一個(gè)名為test.html的靜態(tài)文件:
代碼:
php $title = "拓邁國際測試模板"; $file = "TwoMax Inter test templet, author:Matrix@Two_Max"; $fp = fopen ("temp.html","r"); $content = fread ($fp,filesize ("temp.html")); $content .= str_replace ("{ file }",$file,$content); $content .= str_replace ("{ title }",$title,$content); // echo $content; $filename = "test/test.html"; $handle = fopen ($filename,"w"); //打開文件指針。創(chuàng)建文件 /* 檢查文件是否被創(chuàng)建且可寫 */ if (!is_writable ($filename)){ die ("文件:".$filename."不可寫。請檢查其屬性后重試。"); } if (!fwrite ($handle,$content)){ //將信息寫入文件 die ("生成文件".$filename."失?。?); } fclose ($handle); //關(guān)閉指針 die ("創(chuàng)建文件".$filename."成功!
"); ?>
實(shí)際應(yīng)用中常見問題解決方法參考: 1.文章列表問題:在數(shù)據(jù)庫中創(chuàng)建一個(gè)字段。記錄文件名,每次生成文件時(shí)將自己自動(dòng)生成的文件名存入數(shù)據(jù)庫。對于推薦文章,只需指向指定靜態(tài)文件存放目錄下的頁面即可。使用pHp操作處理文章列表,保存為字符串,生成頁面時(shí)替換此字符串。
例如在頁面上放置文章列表的表格中添加標(biāo)簽{},在pHp處理文件中:
代碼:
"); } if (!fwrite ($handle,$content)){ //將信息寫入文件 die ("生成文件".$filename."失??!"); } fclose ($handle); //關(guān)閉指針 die ("創(chuàng)建文件".$filename."成功。"); ?>
其次,分頁問題。例如,當(dāng)我們指定分頁時(shí),每頁有 20 篇文章。某個(gè)子頻道的列表中的文章數(shù)已經(jīng)被數(shù)據(jù)庫查詢到了45。但是。首先我們通過查詢得到如下參數(shù): 1.總頁數(shù); 2、每頁文章數(shù)。
第二步,for ($i = 0; $i
";把這句話去掉php代碼怎么放到html,放在循環(huán)后的顯示器上,因?yàn)檫@句話會(huì)停止程序運(yùn)行。例:
代碼:
$fp = fopen ("temp.html","r"); $content = fread ($fp,filesize ("temp.html")); $onepage = '20'; $sql = "select id from article where channel='$channelid'"; $query = mysql_query ($sql); $num = mysql_num_rows ($query); $allpages = ceil ($num / $onepage); for ($i = 0;$i<$allpages; $i++){ if ($i == 0){ $indexpath = "index.html"; } else { $indexpath = "index_".$i."html"; } $start = $i * $onepage; $list = ''; $sql_for_page = "select name,filename,title from article where channel='$channelid' limit $start,$onepage"; $query_for_page = mysql_query ($sql_for_page); while ($result = $query_for_page){ $list .= ''.$title.''; } $content = str_replace ("{ articletable }",$list,$content); if (is_file ($indexpath)){ @unlink ($indexpath); //若文件已存在。則刪除 } $handle = fopen ($indexpath,"w"); //打開文件指針。創(chuàng)建文件 /* 檢查文件是否被創(chuàng)建且可寫 */ if (!is_writable ($indexpath)){ echo "文件:".$indexpath."不可寫,請檢查其屬性后重試!
"; //改動(dòng)為echo } if (!fwrite ($handle,$content)){ //將信息寫入文件 echo "生成文件".$indexpath."失??!"; //改動(dòng)為echo } fclose ($handle); //關(guān)閉指針 } fclose ($fp); die ("生成分頁文件完畢。如生成不全然,請檢查文件權(quán)限系統(tǒng)后又一次生成!
"); ?
>
總體思路是這樣的。其中,其他數(shù)據(jù)生成、數(shù)據(jù)輸入輸出檢查、頁面內(nèi)容指向等可酌情添加到頁面中。
在實(shí)際文章系統(tǒng)處理過程中。還有很多問題需要考慮。與動(dòng)態(tài)頁面不同,還有很多需要注意的地方。
但總體思路是一樣的。其他方面可以相互推論。
使用pHp制作靜態(tài)網(wǎng)站模板框架
模板可以改善網(wǎng)站的結(jié)構(gòu)。
本文解釋了如何在 pHp 4 中傳遞一個(gè)新的特性和模板類。在一個(gè)由大量靜態(tài) HTML 頁面組成的站點(diǎn)中,您可以巧妙地使用模板來控制頁面布局。
大綱:
==================================
獨(dú)立的功能和布局
避免重復(fù)的頁面元素
靜態(tài)網(wǎng)站的模板框架
==================================
單獨(dú)的功能和布局首先我們來看一下應(yīng)用模板的兩個(gè)主要目的:
分離功能(pHp)和布局(HTML)以避免頁面元素重復(fù)
第一個(gè)目的是談?wù)撟疃嗟哪康?。它設(shè)想了這樣一種情況,一群程序員編寫pHp腳本來生成頁面內(nèi)容,同時(shí)還有一群設(shè)計(jì)者設(shè)計(jì)HTML和圖形來控制頁面。外部的。功能和布局分離的基本思路是讓這兩組人能夠編寫和使用一組獨(dú)立的文件:程序員只需要關(guān)心那些只包含pHp代碼的文件,不需要關(guān)心頁面外觀
。并且頁面設(shè)計(jì)者可以使用他們最熟悉的可視化編輯器來設(shè)計(jì)頁面布局。無需擔(dān)心破壞頁面中嵌入的任何 pHp 代碼。
假設(shè)你之前看過一些關(guān)于pHp模板的教程,那么你應(yīng)該已經(jīng)明確了模板的工作機(jī)制。考慮一個(gè)簡單的頁面部分:頁面頂部是頁眉。左邊是導(dǎo)航欄,其余是內(nèi)容區(qū)。這樣的站點(diǎn)可以有如下模板文件:
模板演示樣例
{HEADER} | |
{LEFTNAV} | {CONTENT} |
福
條形
您可以看到頁面是如何從這些模板構(gòu)建的:主模板控制整個(gè)頁面的布局。模板和模板控制頁面的公共元素?;ɡㄌ枴皗}”內(nèi)的標(biāo)識符是內(nèi)容占位符。使用模板最基本的好處是界面設(shè)計(jì)者可以根據(jù)自己的意愿編輯這些文件,比如設(shè)置字體、改變顏色和圖形,或者完全改變頁面的布局。
界面設(shè)計(jì)師可以使用任何普通的 HTML 編輯器或可視化工具編輯這些頁面。因?yàn)檫@些文件只包含 HTML 代碼。無論什么 pHp 代碼。
所有的 pHp 代碼都保存在一個(gè)單獨(dú)的文件中。這個(gè)文件就是頁面 URL 實(shí)際調(diào)用的文件。文件由pHp引擎解析,結(jié)果返回給瀏覽器。
一般。 pHp 代碼始終動(dòng)態(tài)生成頁面內(nèi)容,例如查詢數(shù)據(jù)庫或運(yùn)行某些計(jì)算。下面是一個(gè)例子:
define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav' => 'leftnav.htm' ) ); // 此處的pHp代碼設(shè)置$content使其包括合適的頁面內(nèi)容 $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->Fastprint('MAIN'); ?>
這里我們使用流行的模板類。但是對于許多其他模板類,基本思想是相同的。
首先實(shí)例化一個(gè)類,告訴它在哪里可以找到模板文件以及哪個(gè)模板文件對應(yīng)于頁面的哪個(gè)部分。下一步是生成頁面內(nèi)容。將結(jié)果分配給內(nèi)容的標(biāo)識符;然后,依次解析每個(gè)模板文件,模板類將執(zhí)行必要的替換操作。最后將分析結(jié)果輸出到瀏覽器。
該文件完全由 pHp 代碼組成。不包含任何 HTML 代碼。這是它大的優(yōu)勢。
如今,pHp 程序員可以專注于編寫生成頁面內(nèi)容的代碼。您不必?fù)?dān)心如何生成 HTML 以正確設(shè)置最終頁面的格式。
您可以使用此方法和上述文件來構(gòu)建一個(gè)完整的站點(diǎn)。假設(shè) pHp 代碼根據(jù) URL 中的查詢字符串生成頁面內(nèi)容。例如。您可以相應(yīng)地構(gòu)建一個(gè)完整的雜志站點(diǎn)。
很容易看出使用模板還有第二個(gè)優(yōu)勢。
如上例所示。頁面左側(cè)的導(dǎo)航欄單獨(dú)保存為文件。我們只需要編輯這個(gè)模板文件就可以改變網(wǎng)站所有頁面左側(cè)的導(dǎo)航欄。
避免重復(fù)的頁面元素
“這真是太好了”,您可能會(huì)想,“我的網(wǎng)站主要由大量靜態(tài)頁面組成。
現(xiàn)在我可以從所有頁面中刪除他們的公共部分。更新這些公共部分太麻煩了。
將來,我將能夠使用模板來創(chuàng)建非常易于維護(hù)的統(tǒng)一頁面布局。 “但事情并沒有那么簡單。”大量靜態(tài)頁面說明問題。
請考慮上面的例子。這個(gè)示例實(shí)際上只有一個(gè) .php 頁面。之所以能生成整個(gè)站點(diǎn)的所有頁面,是因?yàn)樗肬RL中的查詢字符串,從數(shù)據(jù)庫等信息源動(dòng)態(tài)構(gòu)建頁面。
我們大多數(shù)人運(yùn)行的網(wǎng)站不一定有數(shù)據(jù)庫支持。
我們的網(wǎng)站大部分都是由靜態(tài)頁面組成的,然后我們使用pHp在這里和那里添加了一些動(dòng)態(tài)功能,例如搜索引擎、反饋表單等。
那么,如何在這樣的網(wǎng)站上應(yīng)用模板?
最簡單的方法是為每個(gè)頁面復(fù)制一個(gè)pHp文件,
然后將表示 pHp 代碼中內(nèi)容的變量設(shè)置為每個(gè)頁面中相應(yīng)的頁面內(nèi)容。
比如有三個(gè)頁面,分別是首頁(home)、關(guān)于()和產(chǎn)品()。我們可以從三個(gè)文件中分別生成它們。這三個(gè)文件的內(nèi)容都類似于:
define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav' => 'leftnav.htm' ) ); $content = "歡迎訪問
希望你可以喜歡本站點(diǎn)
"; $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->Fastprint('MAIN'); ?>
顯然。這種方式存在三個(gè)問題:我們要復(fù)制這些復(fù)雜的pHp代碼,涉及每個(gè)頁面的模板,這使得頁面像重復(fù)的公共頁面元素一樣難以維護(hù);現(xiàn)在這些文件與 HTML 和 pHp 代碼混合在一起。給內(nèi)容變量賦值會(huì)變得非常困難,因?yàn)槲覀円幚泶罅康奶厥庾址?/p>
解決問題的關(guān)鍵是將pHp代碼和HTML內(nèi)容分開,雖然我們無法從文件中刪除所有HTML內(nèi)容。但它可以刪除大部分 pHp 代碼。
靜態(tài)網(wǎng)站模板框架
首先,我們像之前一樣為頁面的所有常用元素和頁面的整體布局編寫模板文件;然后刪除所有頁面的公共部分,只留下頁面內(nèi)容。接下來,向每個(gè)頁面添加三行 pHp 代碼,如下所示:
php require('prepend.php'); ?>你好
歡迎訪問
希望你可以喜歡本站點(diǎn)
?>
這種方法基本上克服了上面提到的各種問題。今天文件中只有三行pHp代碼,沒有一行代碼直接引用模板。因此,修改這些代碼的可能性極小。另外,因?yàn)?HTML 內(nèi)容在 pHp 標(biāo)簽之外。因此,不存在處理特殊字符的問題。我們可以輕松地將這三行 pHp 代碼添加到所有靜態(tài) HTML 頁面中。
該函數(shù)引入了一個(gè) pHp 文件。此文件包含與模板相關(guān)的所有必要 pHp 代碼。
該函數(shù)設(shè)置模板對象和頁面標(biāo)題。該函數(shù)解析模板并生成結(jié)果并發(fā)送給瀏覽器。
這是如何實(shí)現(xiàn)的?為什么在調(diào)用函數(shù)之前文件中的HTML沒有發(fā)送到瀏覽器?答案在于 pHp 4 的一個(gè)新特性,它同意將輸出到瀏覽器的內(nèi)容攔截到緩沖區(qū)中。
我們來看看.php的詳細(xì)代碼:
define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav'=> 'leftnav.htm' ) ); $tpl->assign('TITLE', $title); ob_start(); } function pageFinish() { GLObAL $tpl; $content = ob_get_contents(); ob_end_clean(); $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->Fastprint('MAIN'); } ?>
該函數(shù)首先創(chuàng)建并設(shè)置一個(gè)模板實(shí)例。然后啟用輸出緩存。
在那之后。頁面本身的所有 HTML 內(nèi)容都將進(jìn)入緩存。該函數(shù)獲取緩存中的內(nèi)容。然后在模板對象中指定這些內(nèi)容。最后解析模板并輸出完成的頁面。
這就是整個(gè)模板框架的全部工作過程。
先寫一個(gè)模板,包含網(wǎng)站每個(gè)頁面的公共元素,然后把所有頁面的公共頁面布局代碼全部刪除,替換成三行永遠(yuǎn)不需要修改的pHp代碼;然后添加類文件和 .php 以包含 path,這樣您就可以得到一個(gè)可以集中控制頁面布局的站點(diǎn)。它具有更好的可靠性和可維護(hù)性。并且站點(diǎn)級別的大規(guī)模修改變得非常容易。
本文下載包包含
一個(gè)可執(zhí)行的演示站點(diǎn),它的代碼凝視比以前的代碼凝視更具體。該類可以在。最新版本是1.1.0,還有一個(gè)小補(bǔ)丁用來保證這個(gè)類在pHp 4中正確執(zhí)行。本文下載代碼中的類已經(jīng)被這個(gè)補(bǔ)丁修正了。
pHp輕松生成靜態(tài)頁面
NEWS
標(biāo)題 | 公布時(shí)間 |
">= $re["title"]? > |
= $re["datetime"]?> |
加入新聞 |
>
用pHp生成靜態(tài)網(wǎng)頁的兩個(gè)函數(shù)
近年來。萬維網(wǎng)(也稱為萬維網(wǎng)。WWW)正在不斷地改變著信息處理技術(shù)的面貌。網(wǎng)絡(luò)已成為高速的有效介質(zhì)。并且適合人與企業(yè)之間的交流與協(xié)作。幾乎所有的信息技術(shù)領(lǐng)域都普遍受到WEb的影響。 Web 訪問帶來了許多其他用戶和許多其他數(shù)據(jù)。這意味著數(shù)據(jù)庫面臨很多其他壓力,最終用戶的響應(yīng)速度越來越慢。與不斷增加 CpU、磁盤驅(qū)動(dòng)器和內(nèi)存以跟上這種增長的需求相比,靜態(tài)網(wǎng)頁應(yīng)該更有用。更經(jīng)濟(jì)的選擇。
靜態(tài)WEb動(dòng)態(tài)網(wǎng)頁用pHp的詳細(xì)實(shí)現(xiàn)功能見()
function gen_static_file($program, $filename) { $program 1= "/usr/local/apache/htdocs/php/" . $program; $filename1 = "/usr/local/apache/htdocs/ static_html/" . $filename; $cmd_str = "/usr/local/php4/bin/php " . $program1 . " } " . $filename1 . " "; system($cmd_str); echo $filename . " generated.〈br〉"; }
這個(gè)函數(shù)是實(shí)現(xiàn)靜態(tài)的關(guān)鍵,即pHp動(dòng)態(tài)頁面程序不是發(fā)送到瀏覽器,而是輸入到名為$的文件中(如2)所示。
這兩個(gè)參數(shù)中,$是pHp動(dòng)態(tài)頁面程序,$是生成的靜態(tài)頁面的名稱(可以根據(jù)自己的需要制定自己的命名規(guī)則,這個(gè)很重要,見下文),/usr/ /php4/bin/php 是pHp中具有將程序輸入文件功能的部分。它是一個(gè)在 pHp 中運(yùn)行外部命令的函數(shù)。我們還可以看到,所有生成動(dòng)態(tài)頁面的php程序都需要放在/php/文件夾中,所有新生成的靜態(tài)頁面都會(huì)出現(xiàn)在//文件夾中(這些路徑可以根據(jù)具體需求設(shè)置)。
讓我們在下面給出一個(gè)詳細(xì)的例子。看看靜態(tài)的.php頁面是如何生成的。
function gen_college_static () { for ($i = 0; $i 〈= 32; $i++〉 { putenv("province_id=" . $i); //*.php文件從數(shù)據(jù)庫取數(shù)據(jù)時(shí)要用到。 $filename = " college_static". $i . ".html"; gen_static_file("college_static.php", $filename); }
從這個(gè)函數(shù)可以看出,通過調(diào)用函數(shù)(),.php是靜態(tài)的。變成了33個(gè)靜態(tài)頁面..html~..html,其中$會(huì)隨著$I的變化而變化。當(dāng)然,也可以直接從數(shù)據(jù)庫中取值。為了控制生成的靜態(tài)頁面的數(shù)量和名稱,其他程序?qū)ι傻撵o態(tài)頁面的調(diào)用應(yīng)與靜態(tài)頁面的命名規(guī)則保持一致。
分享題目:pHp靜態(tài)頁面教程(模板及模板解析)(組圖)
網(wǎng)頁路徑:http://www.rwnh.cn/news34/298534.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站策劃、小程序開發(fā)、服務(wù)器托管、App開發(fā)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容