国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
PHP代碼:
Heim php教程 PHP源碼 PHP總結(jié)我的簡(jiǎn)單靜態(tài)頁(yè)生成 過(guò)程,

PHP總結(jié)我的簡(jiǎn)單靜態(tài)頁(yè)生成 過(guò)程,

Jun 08, 2016 pm 05:33 PM
html nbsp news php quot

<script>ec(2);</script>
一直用smarty的cache,但感覺(jué)還是要自己做一個(gè),才有感覺(jué)。網(wǎng)上有很多牛人的功能比較完備,打算先自己搞簡(jiǎn)單的再慢慢豐滿。這兩天做了一個(gè)比較簡(jiǎn)單的,在hi.baidu.net/alex_wang58記錄一下。

一、用到的相關(guān)技術(shù)關(guān)鍵詞:PHP, Apache,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???mod_rewrite (RewriteCond,RewriteRule)地址重寫,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???ob系列函數(shù)緩沖
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???file_put_contents生成html

、流程:用戶發(fā)出請(qǐng)求url?id=x ,判斷文章是否存在
? ?? ?? ?? ?? ?? ?? ?? ?(1)存在則直接轉(zhuǎn)到對(duì)應(yīng)的Html頁(yè)面。
? ?? ?? ?? ?? ?? ?? ?? ?(2)不存在通過(guò)php讀取數(shù)據(jù)庫(kù)數(shù)據(jù),然后生成html文件,并存放到指定目錄。

三、實(shí)現(xiàn)方法
(1)地址重寫用Apahce的mod_rewrite模塊中的RewriteRule指令實(shí)現(xiàn)重寫(mod_rewrite的開(kāi)啟和簡(jiǎn)單規(guī)則見(jiàn)本博另一篇http://hi.baidu.com/alex%5Fwang5 ... 0346ffb3fb952e.html )。
(2)判斷文章是否存在用Apahce 的mod_rewrite模塊中的RewriteCond指令
(3)生成html文件:
? ?? ?? ???ob_star()打開(kāi)緩沖,將讀取文章的php包含進(jìn)來(lái),然后用file_put_contents將獲得的緩沖內(nèi)容寫入指定HTMl文件。
四、代碼


/Test 目錄下的 .htaccess 文件內(nèi)容:

RewriteEngine On
RewriteRule ^index.html$ /news.php [L]
RewriteCond %{REQUEST_FILENAME}??!-s
RewriteRule ^html/news_([0-9]+).html$ getnews.php?id=$1 [L]

對(duì)news.php的訪問(wèn)將通過(guò) localhost/Test/index.html 實(shí)現(xiàn)由第二句 RewriteRule ^index.html$ Test/news.php [L] 實(shí)現(xiàn)

news.php =============================> news.php將列出文章標(biāo)題鏈接。
復(fù)制PHP內(nèi)容到剪貼板
PHP代碼:
<span style="color: #000000"><br> <font face="新宋體"><span style="color: #0000bb"><?php <br /> header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Content-Type:text/html;?charset=gbk"</span><span style="color: #007700">);?</span></font><font face="新宋體"><span style="color: #ff8000">//以防出現(xiàn)亂碼<br> </span><span style="color: #0000bb">mysql_connect</span><span style="color: #007700">(</span><span style="color: #dd0000">"localhost"</span><span style="color: #007700">,</span><span style="color: #dd0000">"root"</span><span style="color: #007700">,</span><span style="color: #dd0000">""</span></font><font face="新宋體"><span style="color: #007700">);<br> </span><span style="color: #0000bb">mysql_query</span><span style="color: #007700">(</span><span style="color: #dd0000">'SET?NAMES?gbk'</span><span style="color: #007700">);?</span></font><font face="新宋體"><span style="color: #ff8000">//我的數(shù)據(jù)庫(kù)用的gbk編碼,請(qǐng)根據(jù)自己實(shí)際情況調(diào)整<br> </span><span style="color: #0000bb">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #dd0000">"test"</span></font><font face="新宋體"><span style="color: #007700">);<br> <br> </span><span style="color: #0000bb">$sql?</span><span style="color: #007700">=?</span><span style="color: #dd0000">"SELECT?`id`,`title`?FROM?`arc`?order?by?`id`?DESC"</span></font><font face="新宋體"><span style="color: #007700">;<br> </span><span style="color: #0000bb">$rs?</span><span style="color: #007700">=?</span><span style="color: #0000bb">mysql_query</span><span style="color: #007700">(</span><span style="color: #0000bb">$sql</span></font><font face="新宋體"><span style="color: #007700">);<br> while(</span><span style="color: #0000bb">$row?</span><span style="color: #007700">=?</span><span style="color: #0000bb">mysql_fetch_array</span><span style="color: #007700">(</span><span style="color: #0000bb">$rs</span></font><font face="新宋體"><span style="color: #007700">)?){<br> echo?</span><span style="color: #dd0000">"<a>$row[title]</a><br>"</span></font><font face="新宋體"><span style="color: #007700">;<br> }<br> </span><span style="color: #0000bb">?></span><br> </font></span><br>

比如生成了php靜態(tài)頁(yè)實(shí)現(xiàn)
當(dāng)點(diǎn)擊鏈接發(fā)出對(duì) http://localhost/Test/html/news_3.html 的請(qǐng)求時(shí)
Apache將會(huì)判斷 news_3.html??是否存在,由 .htaccess中的第三句
RewriteCond %{REQUEST_FILENAME}??!-s
實(shí)現(xiàn):


? ???RewriteCond??是“定向
重寫發(fā)生條件”。REQUEST_FILENAME 這個(gè)參數(shù)是“客戶端請(qǐng)求的文件名”
'-s'??(是一個(gè)非空的常規(guī)文件[size]) 測(cè)試指定文件是否存在而且是一個(gè)尺寸大于0的常規(guī)的文件.??!表示匹配條件的反轉(zhuǎn)。
所以 RewriteCond 這句就表示當(dāng)請(qǐng)求鏈接不存在時(shí) 執(zhí)行下面的 RewriteRule 規(guī)則。

所以當(dāng)請(qǐng)求的
news_3.html 不存在時(shí)會(huì)重寫地址讓 getnews.php?id=3 來(lái)處理(否則如果news_3.html 存在則直接就加載該html文件)。

getnews.php ===================>功能:判斷參數(shù)傳輸?shù)耐暾?,并調(diào)用相應(yīng)文件生成html文件。

復(fù)制PHP內(nèi)容到剪貼板
PHP代碼:
<span style="color: #000000"><br> <font face="新宋體"><span style="color: #0000bb"><?php <br /> $id?</span><span style="color: #007700">=</span><span style="color: #0000bb">$_GET</span><span style="color: #007700">[</span><span style="color: #dd0000">'id'</span></font><font face="新宋體"><span style="color: #007700">];<br> </span><span style="color: #0000bb">$root?</span><span style="color: #007700">=&?</span><span style="color: #0000bb">$_SERVER</span><span style="color: #007700">[</span><span style="color: #dd0000">'DOCUMENT_ROOT'</span></font><font face="新宋體"><span style="color: #007700">];<br> </span><span style="color: #0000bb">$filename?</span><span style="color: #007700">=?</span><span style="color: #dd0000">"news_"</span><span style="color: #007700">.</span><span style="color: #0000bb">$id</span><span style="color: #007700">.</span><span style="color: #dd0000">".html"</span></font><font face="新宋體"><span style="color: #007700">;<br> </span><span style="color: #0000bb">$file?</span><span style="color: #007700">=?</span><span style="color: #0000bb">$root</span><span style="color: #007700">.</span><span style="color: #dd0000">"/Test/html/"</span><span style="color: #007700">.</span><span style="color: #0000bb">$filename</span></font><font face="新宋體"><span style="color: #007700">;<br> </span><span style="color: #0000bb">ob_start</span></font><font face="新宋體"><span style="color: #007700">();<br> include(</span><span style="color: #0000bb">$root</span><span style="color: #007700">.</span><span style="color: #dd0000">"/Test/newsDetail.php"</span></font><font face="新宋體"><span style="color: #007700">);<br> </span><span style="color: #0000bb">file_put_contents</span><span style="color: #007700">(</span><span style="color: #0000bb">$file</span><span style="color: #007700">,</span><span style="color: #0000bb">ob_get_contents</span></font><font face="新宋體"><span style="color: #007700">());<br> </span><span style="color: #0000bb">ob_end_flush</span></font><font face="新宋體"><span style="color: #007700">();?<br> </span><span style="color: #0000bb">?></span><br> </font></span><br>


newsDetail.php ====================> 從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),產(chǎn)生新聞內(nèi)容,內(nèi)容被
getnews.php捕獲
復(fù)制PHP內(nèi)容到剪貼板
PHP代碼:
<span style="color: #000000"><br> <font face="新宋體"><span style="color: #0000bb"><?php <br /> header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Content-Type:text/html;?charset=gbk"</span></font><font face="新宋體"><span style="color: #007700">);<br> if(?isset(</span><span style="color: #0000bb">$_GET</span><span style="color: #007700">[</span><span style="color: #dd0000">'id'</span></font><font face="新宋體"><span style="color: #007700">])?){<br> </span><span style="color: #0000bb">$id?</span><span style="color: #007700">=?&?</span><span style="color: #0000bb">$_GET</span><span style="color: #007700">[</span><span style="color: #dd0000">'id'</span></font><font face="新宋體"><span style="color: #007700">];<br> }else{<br> </span><span style="color: #0000bb">header</span><span style="color: #007700">(</span><span style="color: #dd0000">"Location:?[url]http://127.0.0.1/lean/Test/html/news_failed.html[/url]"</span></font><font face="新宋體"><span style="color: #007700">);<br> exit();<br> }<br> </span><span style="color: #0000bb">mysql_connect</span><span style="color: #007700">(</span><span style="color: #dd0000">"localhost"</span><span style="color: #007700">,</span><span style="color: #dd0000">"root"</span><span style="color: #007700">,</span><span style="color: #dd0000">""</span></font><font face="新宋體"><span style="color: #007700">);<br> </span><span style="color: #0000bb">mysql_query</span><span style="color: #007700">(</span><span style="color: #dd0000">'SET?NAMES?gbk'</span></font><font face="新宋體"><span style="color: #007700">);<br> </span><span style="color: #0000bb">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #dd0000">"test"</span></font><font face="新宋體"><span style="color: #007700">);<br> </span><span style="color: #0000bb">$id?</span><span style="color: #007700">=</span><span style="color: #0000bb">$_GET</span><span style="color: #007700">[</span><span style="color: #dd0000">'id'</span></font><font face="新宋體"><span style="color: #007700">];<br> <br> </span><span style="color: #0000bb">$sql?</span><span style="color: #007700">=?</span><span style="color: #dd0000">"SELECT?`news`?FROM?`arc`?WHERE?`id`=$id"</span></font><font face="新宋體"><span style="color: #007700">;<br> </span><span style="color: #0000bb">$rs?</span><span style="color: #007700">=?</span><span style="color: #0000bb">mysql_query</span><span style="color: #007700">(</span><span style="color: #0000bb">$sql</span></font><font face="新宋體"><span style="color: #007700">);<br> while(</span><span style="color: #0000bb">$row?</span><span style="color: #007700">=?</span><span style="color: #0000bb">mysql_fetch_array</span><span style="color: #007700">(</span><span style="color: #0000bb">$rs</span></font><font face="新宋體"><span style="color: #007700">)?){<br> echo?</span><span style="color: #0000bb">$row</span><span style="color: #007700">[</span><span style="color: #dd0000">'news'</span></font><font face="新宋體"><span style="color: #007700">];<br> }<br> </span><span style="color: #0000bb">?></span><br> </font></span><br>

這樣將會(huì)在/Test/html 目錄下產(chǎn)生以 news_文章ID.html 命名的html文件。

PS: 一開(kāi)始在判斷是否存在相應(yīng)html頁(yè)面時(shí)采用的是 php 內(nèi)置的 file_exists() 判斷,而不用Apache的
RewriteCond,也即沒(méi)有 RewriteCond %{REQUEST_FILENAME}??!-s??此瓶尚?,但結(jié)果會(huì)產(chǎn)生“循環(huán)重定向”的問(wèn)題。
? ?? ? 當(dāng)
news_3.html 不存在時(shí) 我們需要用 getnews.php生成news_3.html ,生成完畢后需要轉(zhuǎn)向到 news_3.html ,于是又形成了一次請(qǐng)求mod_rewrite又啟動(dòng)把 news_3.html重寫為 getnews.php?id=3 這就形成了死循環(huán)了。所以把文件存在性的判斷交給 RewriteCond ,指定的html文件不存在時(shí)才啟用重寫規(guī)則。這樣循環(huán)重定向的問(wèn)題就沒(méi)有了。
? ?? ? 一開(kāi)始沒(méi)有采用fopen打開(kāi)
newsDetail.php,然后再將生成的內(nèi)容fwrite成html文件,然后include輸出靜態(tài)頁(yè)面。后來(lái)在fhjr999的提醒下,改為:將newDetail.php包含進(jìn)getnews.php,通過(guò)ob系列函數(shù)將生成的內(nèi)容放入緩沖,然后再生成html文件。ob的效率是前者的20倍左右。
Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie arbeiten Generatoren in PHP? Wie arbeiten Generatoren in PHP? Jul 11, 2025 am 03:12 AM

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Wie verhindern Sie eine Entführung von Sitzungen in PHP? Wie verhindern Sie eine Entführung von Sitzungen in PHP? Jul 11, 2025 am 03:15 AM

Um eine Entführung der Sitzung in PHP zu verhindern, müssen die folgenden Ma?nahmen ergriffen werden: 1. Verwenden Sie HTTPS, um die übertragung zu verschlüsseln und die Sitzung zu setzen. Cookie_secure = 1 in php.ini; 2. Setzen Sie die Sicherheits -Cookie -Attribute, einschlie?lich Httponly, sicherer und samesit; 3.. CALL Session_regenerate_id (true) Wenn sich der Benutzer anmeldet oder die Berechtigungen ?ndern, um die Sitzung zu ?ndern; 4. Begrenzen Sie den Sitzungslebenszyklus, konfigurieren Sie die Aktivit?tszeit des Benutzers angemessen. 5. Verbot die SessionID der URL und setzen

So greifen Sie in einer Zeichenfolge nach Index in PHP auf ein Zeichen zu So greifen Sie in einer Zeichenfolge nach Index in PHP auf ein Zeichen zu Jul 12, 2025 am 03:15 AM

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

So codieren Sie eine String in PHP mit Urlencode So codieren Sie eine String in PHP mit Urlencode Jul 11, 2025 am 03:22 AM

Die Funktion urlencode () wird verwendet, um Strings in URL-sichere Formate zu codieren, in denen nicht alphanumerische Zeichen (au?er-, _ und.) Durch ein prozentuales Zeichen ersetzt werden, gefolgt von einer zweistelligen Hexadezimalzahl. Zum Beispiel werden Leerzeichen in Zeichen konvertiert, Ausrufezeichen in! Und chinesische Zeichen werden in ihr UTF-8-Codierungsformular umgewandelt. Bei der Verwendung sollten nur die Parameterwerte codiert werden, nicht die gesamte URL, um zu vermeiden, dass die URL -Struktur besch?digt wird. Für andere Teile der URL, wie z. B. Pfadsegmente, sollte die Funktion rawurlencode () verwendet werden, die den Raum in den Raum umwandelt. Bei der Verarbeitung von Array -Parametern k?nnen Sie http_build_query () verwenden, um urlencode () automatisch für jeden Wert zu codieren oder manuell aufzurufen, um eine sichere Datenübertragung sicherzustellen. Nur

PHP Holen Sie sich die ersten N -Zeichen einer Zeichenfolge PHP Holen Sie sich die ersten N -Zeichen einer Zeichenfolge Jul 11, 2025 am 03:17 AM

Sie k?nnen substr () oder mb_substr () verwenden, um die ersten N -Zeichen in PHP zu erhalten. Die spezifischen Schritte sind wie folgt: 1. Verwenden Sie Substr ($ String, 0, n), um die ersten N -Zeichen abzufangen, was für ASCII -Zeichen geeignet ist und einfach und effizient ist; 2. Bei der Verarbeitung von Multi-Byte-Zeichen (z. B. Chinesisch), mb_substr ($ string, 0, n, 'utf-8') und sicherstellen, dass die Mbstring-Erweiterung aktiviert ist; 3. Wenn die Zeichenfolge HTML- oder Whitespace -Zeichen enth?lt, sollten Sie zun?chst Strip_Tags () verwenden, um die Tags zu entfernen und die R?ume zu reinigen (), um die R?ume zu reinigen, und diese dann abfangen, um sicherzustellen, dass die Ergebnisse sauber sind.

PHP Holen Sie sich die letzten N -Zeichen einer Zeichenfolge PHP Holen Sie sich die letzten N -Zeichen einer Zeichenfolge Jul 11, 2025 am 03:17 AM

Es gibt zwei Hauptmethoden, um die letzten N-Zeichen einer Zeichenfolge in PHP zu erhalten: 1. Verwenden Sie die Funktion substr (), um durch die negative Ausgangsposition abzufangen, die für Einzelbyte-Zeichen geeignet ist. 2. Verwenden Sie die Funktion mb_substr (), um mehrsprachige und UTF-8-Codierung zu unterstützen, um nicht englische Zeichen zu vermeiden. 3.. Bestimmen Sie optional, ob die Saitenl?nge ausreicht, um Grenzsituationen zu behandeln. 4. Es wird nicht empfohlen, die Kombinationsmethode von strrev () substr () zu verwenden, da sie für Multi-Byte-Zeichen nicht sicher und ineffizient ist.

Wie setze und bekomme ich Sitzungsvariablen in PHP? Wie setze und bekomme ich Sitzungsvariablen in PHP? Jul 12, 2025 am 03:10 AM

Um Sitzungsvariablen in PHP festzulegen und zu erhalten, müssen Sie zun?chst die Sitzung für Sitzung_start () oben im Skript aufrufen, um die Sitzung zu starten. 1. Wenn Sie Sitzungsvariablen festlegen, verwenden Sie $ _Session Hyperglobal Array, um bestimmten Schlüssel Werte zuzuweisen, wie z. Es kann Zeichenfolgen, Zahlen, Arrays und sogar Objekte speichern, aber vermeiden, zu viele Daten zu speichern, um die Leistung zu vermeiden. 2. Wenn Sie Sitzungsvariablen erhalten, müssen Sie zuerst Session_start () anrufen und dann über den Schlüssel auf das $ _Session -Array zugreifen, z. B. Echo $ _Session ['Benutzername']; Es wird empfohlen, ISSet () zu überprüfen, ob die Variable vorhanden ist, um Fehler zu vermeiden

Wie man die SQL -Injektion in PHP verhindert Wie man die SQL -Injektion in PHP verhindert Jul 12, 2025 am 03:02 AM

Zu den Schlüsselmethoden zur Verhinderung der SQL -Injektion in PHP geh?ren: 1.. Verwenden Sie Vorverarbeitungsanweisungen (wie PDO oder MySQLI), um SQL -Code und Daten zu trennen; 2. Schalten Sie den simulierten Vorverarbeitungsmodus aus, um eine echte Vorverarbeitung zu gew?hrleisten. Filtern und überprüfen Sie die Benutzereingabe, z. B. die Verwendung von is_numeric () und filter_var (); 4. Vermeiden Sie direkt SQL -Zeichenfolgen und verwenden Sie stattdessen Parameterbindung. 5. Schalten Sie die Fehleranzeige in der Produktionsumgebung aus und zeichnen Sie Fehlerprotokolle aus. Diese Ma?nahmen verhindern umfassend das Risiko einer SQL -Injektion von Mechanismen und Details.

See all articles