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

Table des matières
PHP代碼:
Maison php教程 PHP源碼 PHP總結(jié)我的簡(jiǎn)單靜態(tài)頁生成 過程,

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

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

<script>ec(2);</script>
一直用smarty的cache,但感覺還是要自己做一個(gè),才有感覺。網(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頁面。
? ?? ?? ?? ?? ?? ?? ?? ?(2)不存在通過php讀取數(shù)據(jù)庫(kù)數(shù)據(jù),然后生成html文件,并存放到指定目錄。

三、實(shí)現(xiàn)方法
(1)地址重寫用Apahce的mod_rewrite模塊中的RewriteRule指令實(shí)現(xiàn)重寫(mod_rewrite的開啟和簡(jiǎn)單規(guī)則見本博另一篇http://hi.baidu.com/alex%5Fwang5 ... 0346ffb3fb952e.html )。
(2)判斷文章是否存在用Apahce 的mod_rewrite模塊中的RewriteCond指令
(3)生成html文件:
? ?? ?? ???ob_star()打開緩沖,將讀取文章的php包含進(jìn)來,然后用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的訪問將通過 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)頁實(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 來處理(否則如果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: 一開始在判斷是否存在相應(yīng)html頁面時(shí)采用的是 php 內(nèi)置的 file_exists() 判斷,而不用Apache的
RewriteCond,也即沒有 RewriteCond %{REQUEST_FILENAME}??!-s??此瓶尚校Y(jié)果會(huì)產(chǎn)生“循環(huá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)重定向的問題就沒有了。
? ?? ? 一開始沒有采用fopen打開
newsDetail.php,然后再將生成的內(nèi)容fwrite成html文件,然后include輸出靜態(tài)頁面。后來在fhjr999的提醒下,改為:將newDetail.php包含進(jìn)getnews.php,通過ob系列函數(shù)將生成的內(nèi)容放入緩沖,然后再生成html文件。ob的效率是前者的20倍左右。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir l'ID de session en cours dans PHP? Comment obtenir l'ID de session en cours dans PHP? Jul 13, 2025 am 03:02 AM

La méthode pour obtenir l'ID de session en cours dans PHP est d'utiliser la fonction session_id (), mais vous devez appeler session_start () pour l'obtenir avec succès. 1. Appelez session_start () pour démarrer la session; 2. Utilisez session_id () pour lire l'ID de session et sortir une cha?ne similaire à ABC123DEF456GHI789; 3. Si le retour est vide, vérifiez si session_start () est manquant, si l'utilisateur accède pour la première fois, ou si la session est détruite; 4. L'ID de session peut être utilisé pour l'exploitation forestière, la vérification de la sécurité et la communication croisée, mais la sécurité doit être prêtée attention. Assurez-vous que la session est correctement activée et que l'ID peut être obtenu avec succès.

Php obtient une sous-cha?ne à partir d'une cha?ne Php obtient une sous-cha?ne à partir d'une cha?ne Jul 13, 2025 am 02:59 AM

Pour extraire les sous-cha?nes de cha?nes PHP, vous pouvez utiliser la fonction substr (), qui est Syntax substr (String $ string, int $ start ,? int $ longueur = null), et si la longueur n'est pas spécifiée, elle sera interceptée à la fin; Lors du traitement des caractères multi-octets tels que le chinois, vous devez utiliser la fonction mb_substr () pour éviter le code brouillé; Si vous avez besoin d'intercepter la cha?ne en fonction d'un séparateur spécifique, vous pouvez utiliser exploit () ou combiner strpos () et substr () pour l'implémenter, tels que l'extraction d'extensions de nom de fichier ou de noms de domaine.

Comment effectuez-vous des tests unitaires pour le code PHP? Comment effectuez-vous des tests unitaires pour le code PHP? Jul 13, 2025 am 02:54 AM

UnittestingInphpinvolvesverifierifySindividualCodeUnits like outweethodstocatchbugSearlyAndensureReliveLerefactoring.1) setupphpunitviacomposer, createAtestDirectory, andconfigureAutoloadandphpunit.xml.2)

Comment diviser une cha?ne en un tableau en php Comment diviser une cha?ne en un tableau en php Jul 13, 2025 am 02:59 AM

Dans PHP, la méthode la plus courante consiste à diviser la cha?ne en un tableau à l'aide de la fonction Exploit (). Cette fonction divise la cha?ne en plusieurs parties via le délimiteur spécifié et renvoie un tableau. La syntaxe est Exploit (séparateur, cha?ne, limite), où le séparateur est le séparateur, la cha?ne est la cha?ne d'origine et la limite est un paramètre facultatif pour contr?ler le nombre maximum de segments. Par exemple $ str = "pomme, banane, orange"; $ arr = explosage (",", $ str); Le résultat est ["Apple", "Bana

Types de données JavaScript: référence primitive vs Types de données JavaScript: référence primitive vs Jul 13, 2025 am 02:43 AM

Les types de données JavaScript sont divisés en types primitifs et types de référence. Les types primitifs incluent la cha?ne, le nombre, le booléen, le nul, un non défini et le symbole. Les valeurs sont immuables et les copies sont copiées lors de l'attribution des valeurs, de sorte qu'elles ne se affectent pas; Les types de référence tels que les objets, les tableaux et les fonctions stockent les adresses de mémoire, et les variables pointant vers le même objet s'afferchent mutuellement. Le typeof et l'instance de OFF peuvent être utilisés pour déterminer les types, mais prêtent attention aux problèmes historiques de typeofnull. Comprendre ces deux types de différences peut aider à écrire un code plus stable et fiable.

Utilisation de STD :: Chrono en C Utilisation de STD :: Chrono en C Jul 15, 2025 am 01:30 AM

STD :: Chrono est utilisé en C pour traiter le temps, y compris l'obtention de l'heure actuelle, la mesure du temps d'exécution, le point de fonctionnement et la durée de l'opération et le temps d'analyse de formatage. 1. Utilisez STD :: Chrono :: System_clock :: Now () pour obtenir l'heure actuelle, qui peut être convertie en une cha?ne lisible, mais l'horloge système peut ne pas être monotone; 2. Utilisez STD :: Chrono :: standard_clock pour mesurer le temps d'exécution pour assurer la monotonie, et la convertir en millisecondes, secondes et autres unités via durée_cast; 3. Point de temps (temps_point) et durée (durée) peut être interopérable, mais l'attention doit être accordée à la compatibilité des unités et à l'époque de l'horloge (époque)

Comment PHP gère-t-il les variables d'environnement? Comment PHP gère-t-il les variables d'environnement? Jul 14, 2025 am 03:01 AM

TOACCESSENSIRONDAMENTVARIBLESSInPHP, useGettenv () Orthe $ _ENVSUPERGLOBAL.1.getenv ('var_name') RetrievesAsaspecificVariable.2. $ _ En V ['var_name'] AccesssaSVariblesifVariables_OrderInphp.iniIncluses "E" .setVariblesVICLIWithVar = ValuePpript.Php, INAPACH

Comment passer une variable de session à une autre page de PHP? Comment passer une variable de session à une autre page de PHP? Jul 13, 2025 am 02:39 AM

Dans PHP, pour passer une variable de session à une autre page, la clé consiste à démarrer correctement la session et à utiliser le même nom de clé $ _Session. 1. Avant d'utiliser des variables de session pour chaque page, il doit être appelé session_start () et placé à l'avant du script; 2. Définir des variables de session telles que $ _Session ['username'] = 'JohnDoe' sur la première page; 3. Après avoir appelé session_start () sur une autre page, accédez aux variables via le même nom de clé; 4. Assurez-vous que Session_Start () est appelé sur chaque page, évitez la sortie du contenu à l'avance et vérifiez que le chemin de stockage de session sur le serveur est écrivable; 5. Utilisez SES

See all articles