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

目次
PHP代碼:
ホームページ php教程 PHP源碼 PHP總結(jié)我的簡(jiǎn)單靜態(tài)頁(yè)生成 過程,

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

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頁(yè)面。
? ?? ?? ?? ?? ?? ?? ?? ?(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)來(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的訪問將通過 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: 一開始在判斷是否存在相應(yīng)html頁(yè)面時(shí)采用的是 php 內(nèi)置的 file_exists() 判斷,而不用Apache的
RewriteCond,也即沒有 RewriteCond %{REQUEST_FILENAME}??!-s??此瓶尚?,但結(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)頁(yè)面。后來(lái)在fhjr999的提醒下,改為:將newDetail.php包含進(jìn)getnews.php,通過ob系列函數(shù)將生成的內(nèi)容放入緩沖,然后再生成html文件。ob的效率是前者的20倍左右。
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLで記事、セクション、および脇にセマンティック構(gòu)造を適用する HTMLで記事、セクション、および脇にセマンティック構(gòu)造を適用する Jul 05, 2025 am 02:03 AM

HTMLでのセマンティックタグの合理的な使用は、ページ構(gòu)造の明確さ、アクセシビリティ、SEO効果を改善することができます。 1.ブログの投稿やコメントなどの獨(dú)立したコンテンツブロックに使用されると、自己完結(jié)型でなければなりません。 2。通常はタイトルを含む分類関連のコンテンツに使用され、ページのさまざまなモジュールに適しています。 3。サイドバーの推奨事項(xiàng)や著者プロファイルなど、メインコンテンツに関連する補(bǔ)助情報(bào)に使用されますが、コアではありません。実際の開発では、ラベルを組み合わせて、その他を組み合わせ、過度のネストを避け、構(gòu)造をシンプルに保ち、開発者ツールを使用して構(gòu)造の合理性を検証する必要があります。

ファイルアップロードをPHPで安全に処理する方法は? ファイルアップロードをPHPで安全に処理する方法は? Jul 08, 2025 am 02:37 AM

PHPファイルのアップロードを安全に処理するには、ソースとタイプを確認(rèn)し、ファイル名とパスを制御し、サーバー制限を設(shè)定し、メディアファイルを2回プロセスする必要があります。 1.トークンを介してCSRFを防ぐためにアップロードソースを確認(rèn)し、ホワイトリストコントロールを使用してFINFO_FILEを介して実際のMIMEタイプを検出します。 2。ファイルをランダムな文字列に変更し、検出タイプに従って非WEBディレクトリに保存する拡張機(jī)能を決定します。 3。PHP構(gòu)成は、アップロードサイズを制限し、一時(shí)的なディレクトリnginx/apacheはアップロードディレクトリへのアクセスを禁止します。 4. GDライブラリは寫真を再利用して、潛在的な悪意のあるデータをクリアします。

PHPの參照により、値ごとに変數(shù)をどのように渡しますか? PHPの參照により、値ごとに変數(shù)をどのように渡しますか? Jul 08, 2025 am 02:42 AM

inphp、variablySarepassedByValueByDefault、意味することを意味します

Bonk ETF Craze:ミームコインの急増の觸媒? Bonk ETF Craze:ミームコインの急増の觸媒? Jul 04, 2025 pm 09:06 PM

ボンクは急上昇します! ETFアプリケーション、技術(shù)的なブレークスルー、ソラナの強(qiáng)さが重要です。これはミーム通貨革命の始まりですか、それとも別のバブルですか? Bonketf Craze:ミームコインの離陸の觸媒? Bonk Priceは、ETFの期待、技術(shù)的な強(qiáng)気性、Solana Networkの強(qiáng)力なパフォーマンスに起因する、過去24時(shí)間で20%近く上昇しました。 Bonketfはミーム通貨革命の觸媒となるのでしょうか? ETFアプリケーションは市場(chǎng)の熱意に火をつけます。 TuttleCapitalManagementによって提出されたBonketfの2倍の適用は、現(xiàn)在重要な原動(dòng)力となっています。関連文書は、ETFが7月16日に正式に発売される可能性があることを示しています。このニュースは、投資家に構(gòu)造化されたBonk Investment製品に投資するよう促しました。

PHPは、サブストリングの最後の発生の位置を見つけます PHPは、サブストリングの最後の発生の位置を見つけます Jul 09, 2025 am 02:49 AM

PHPでのサブストリングの最後の発生を見つける最も直接的な方法は、Strrpos()関數(shù)を使用することです。 1。strrpos()関數(shù)を使用して、メイン文字列のサブストリングの最後の発生のインデックスを直接取得します。発見されていない場(chǎng)合、Falseを返します。構(gòu)文はstrrpos($ haystack、$ edele、$ offset = 0)です。 2.ケースを無(wú)視する必要がある場(chǎng)合は、Strripos()関數(shù)を使用して、ケース非感受性検索を?qū)g裝できます。 3。中國(guó)語(yǔ)などのマルチバイト文字の場(chǎng)合、MBSTRING拡張機(jī)能のMB_STRRPOS()関數(shù)を使用して、バイト位置の代わりに文字位置が返されるようにする必要があります。 4. strrpos()がfを返すことに注意してください

HTMLを使用して選択したドロップダウン內(nèi)でオプションをグループ化する方法は? HTMLを使用して選択したドロップダウン內(nèi)でオプションをグループ化する方法は? Jul 04, 2025 am 03:16 AM

HTMLのタグを使用して、ドロップダウンメニューにオプションをグループ化します。特定の方法は、次のような要素のグループを包み、ラベル屬性を介してグループ名を定義することです。1。リンゴ、バナナ、オレンジなどのオプションが含まれます。 2。ニンジン、ブロッコリーなどのオプションが含まれています。 3。それぞれが獨(dú)立したグループであり、グループ內(nèi)のオプションは自動(dòng)的にインデントされます。メモには以下が含まれます。 firsedグループ全體を無(wú)効にする屬性を介して無(wú)効にすることができます。 styleスタイルは制限されており、CSSまたはサードパーティライブラリと組み合わせて美化する必要があります。 select2などのプラグインを使用して機(jī)能を強(qiáng)化できます。

PHPヘッダーの場(chǎng)所AJAXコールが機(jī)能していません PHPヘッダーの場(chǎng)所AJAXコールが機(jī)能していません Jul 10, 2025 pm 01:46 PM

Ajax要求のヘッダー( '場(chǎng)所:...')が無(wú)効である理由は、ブラウザがページリダイレクトを自動(dòng)的に実行しないためです。 AJAXリクエストでは、サーバーによって返される302ステータスコードとロケーションヘッダー情報(bào)は、ジャンプ動(dòng)作をトリガーするのではなく、応答データとして処理されるためです。ソリューションは次のとおりです。1。PHPでJSONデータを返し、ジャンプURLを含みます。 2.フロントエンドのAJAXコールバックのリダイレクトフィールドを確認(rèn)し、window.location.hrefで手動(dòng)でジャンプします。 3. PHP出力がJSONのみであることを確認(rèn)して、障害を解析することを避けます。 4。ドメインを超えた問題に対処するには、適切なCORSヘッダーを設(shè)定する必要があります。 5.キャッシュ干渉を防ぐために、タイムスタンプを追加したり、キャッシュを設(shè)定したりできます。

HTMLボタン要素を使用してクリック可能なボタンを?qū)g裝します HTMLボタン要素を使用してクリック可能なボタンを?qū)g裝します Jul 07, 2025 am 02:31 AM

HTMLボタン要素を使用してクリック可能なボタンを?qū)g現(xiàn)するには、まずその基本的な使用法と一般的な予防策を習(xí)得する必要があります。 1.デフォルトで送信されるタイプ屬性(ボタン、送信、リセットなど)を使用してタグを使用してボタンを作成し、動(dòng)作を定義します。 2. JavaScriptを介してインタラクティブな関數(shù)を追加します。これは、IDを介してインラインまたはバインドイベントリスナーを作成してメンテナンスを改善することができます。 3. CSSを使用して、バックグラウンドカラー、ボーダー、丸いコーナー、ホバー/アクティブステータス効果などのスタイルをカスタマイズして、ユーザーエクスペリエンスを強(qiáng)化します。 4.一般的な問題に注意してください:無(wú)効な屬性が有効になっていないことを確認(rèn)し、JSイベントが正しくバインドされ、レイアウトオクルージョンがあり、開発者ツールのヘルプを使用して例外をトラブルシューティングします。これをマスターします

See all articles