1. PHP スクリプトと動的ページ。
PHP スクリプトは、埋め込みなどの方法で HTML ファイルと混合したり、クラスや関数のカプセル化などの形式のテンプレートの形式でユーザー要求を処理したりできる、サーバー側のスクリプト プログラムです。いずれにせよ、基本はこれです。クライアントが特定のページをリクエストします -----> WEB サーバーは、指定された対応するスクリプトを処理に導入します -----> スクリプトはサーバーにロードされます -----> 指定された PHP 解析サーバーによってスクリプトはブラウザによって解析され、HTML 言語形式が形成されます----> 解析された HTML ステートメントはパッケージの形式でブラウザに返されます。このことから、ページがブラウザに送信された後は PHP が存在せず、HTML ステートメントに変換および解析されたことがわかります。実際、クライアントのリクエストは動的ファイルであり、PHP はそれを対応するページに解析してブラウザに送り返します。このページの処理方法は「動的ページ」と呼ばれます。
2 番目の静的ページ。
静的ページとは、サーバー側に実際に存在し、HTML、JS、CSS、およびその他のクライアント側スクリプトのみを含むページを指します。扱い方としては。クライアントは特定のページをリクエストします---> WEB サーバーは特定のページを確認してロードします---> WEB サーバーはそのページをパッケージの形式でブラウザに返します。このプロセスから、動的ページを比較して確認できます。動的ページは WEB サーバーの PHP パーサーで解析する必要があり、通常、HTML 言語情報パッケージを形成する前にデータベースに接続してデータベース アクセス操作を実行する必要がありますが、静的ページは解析したり接続したりする必要はありません。データベースに直接送信できるため、サーバーの負荷が大幅に軽減され、サーバーの負荷容量が向上し、ページを開く速度と Web サイト全体を開く速度が大幅に向上します。ただし、その欠点は、リクエストを動的に処理できないことと、ファイルが実際にサーバー上に存在する必要があることです。
3. テンプレートとテンプレート分析。
テンプレートにはコンテンツ HTML ファイルがまだ入力されていません。例:
temp.html
コード:
コードをコピー コードは次のとおりです:
< ;HTML>
これは { file } ファイルのテンプレットです
HTML>
PHP 処理: templetest.php
コード:
$title = "TwoMax International テスト テンプレート";
$file = "TwoMax Inter テスト テンプレット、
著者: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); ;
?>
テンプレート解析処理とは、PHP スクリプトを解析して処理した結果をテンプレートに埋め込む処理です。通常はテンプレート クラスの助けを借ります。現在、より一般的なテンプレート解析クラスには、phplib、smarty、fastsmarty などが含まれます。テンプレートの解析処理の原則は、通常は置換です。また、判定やループなどの処理をテンプレートファイルに入れて解析クラスで処理することに慣れているプログラマもいますが、その典型的な応用が単純にループ処理であるブロック概念です。 PHP スクリプトはループの数、ループの方法などを指定し、テンプレート解析クラスがこれらの操作を実装します。 静的ページと動的ページの長所と短所を比較した後、PHP を使用して静的ファイルを生成する方法について話しましょう。
PHP による静的ページの生成とは、PHP の動的解析と HTML ページの出力を指すのではなく、PHP を使用して HTML ページを作成することを指します。同時に、HTML は書き込み不可能な性質があるため、作成した HTML が変更された場合は、削除して再生成する必要があります。 (もちろん、通常のルールを使用して変更することもできますが、個人的には、削除して再生成するよりも速いと思いますが、メリットはありません。)
本題に戻ります。 PHP のファイル操作関数を使用したことのある PHP ファンは、PHP にファイルを開くファイル操作関数 fopen があることを知っています。ファイルが存在しない場合は、作成してみてください。これは、PHP を使用して HTML ファイルを作成できる理論的基礎です。 HTML ファイルの保存に使用されるフォルダーに書き込み権限 (つまり、権限定義 0777) がある限り、ファイルを作成できます。 (UNIX システムの場合、Win システムは考慮する必要はありません。) 上記の例を例として、最後の文を変更して test ディレクトリに test.html という名前の静的ファイルを生成するように指定すると、次のようになります。
コード:
コードをコピー コードは次のとおりです: コードをコピー コードは次のとおりです:
$title = "TwoMax Inter テスト テンプレート";
$file = "TwoMax Inter テスト テンプレット、
作成者:Matrix@Two_Max"; = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }" , $file,$content);
$content .= str_replace ("{ title }",$title,$content);
$filename = "test/test.html ";
$handle = fopen ($filename,"w"); // ファイル ポインターを開き、ファイルを作成します
/*
ファイルが作成され、書き込み可能かどうかを確認します
*/
if (!is_writable ($filename)){
die ("ファイル: ".$filename." は書き込み可能ではありません。プロパティを確認して再試行してください!");
}
if ( !fwrite ($handle,$content)){ //ファイルへの情報の書き込み
die ("Generate file".$filename."Failed!")
}
fclose ($handle); / Close pointer
die ("Create file".$filename."Success!");
?>
1. 記事リストの問題: ファイルが生成されるたびに、ファイル名を記録します。データベース内の推奨記事については、静的ファイルが保存されている指定されたフォルダー内のページをポイントするだけです。 PHP 操作を使用して記事リストを処理し、文字列として保存し、ページの生成時にこの文字列を置き換えます。たとえば、ページ上の記事リストが配置されるテーブルと PHP 処理ファイルにマーク {articletable} を追加します。
コード:
$file = "TwoMax Inter test templatet,
作者: 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); // リストの生成を開始します
$list = '' ;
$sql = "記事から ID、タイトル、ファイル名を選択";
$query = mysql_query ($sql)
while ($result = mysql_fetch_array ($query) )){
$list .= ''.$result['title'].'';
}
$content .= str_replace ("{articletable }",$list,$content);
//リスト生成の終了
// echo $content;
$filename = "test/test.html"
$handle = fopen ($filename,"w");ファイルポインタを開いてファイルを作成します
/*
ファイルが作成され書き込み可能かどうかを確認します
*/
if (!is_writable ($filename)){
die ("File: ".$filename." は書き込み可能ではありません。属性の後にもう一度試してください! ");
}
if (!fwrite ($handle,$content)){ //ファイルに情報を書き込みます
die ("ファイルの生成".$filename." 失敗しました! ");
}
fclose ($handle); //ポインターを閉じます
die ("ファイルの作成".$filename." 成功しました! ");
?>
2 番目に、ページングの問題です。
ページングを指定すると、1 ページあたり 20 個の記事が表示されます。特定のサブチャネル リストには、データベース クエリが 45 あるため、最初にクエリを通じて次のパラメータを取得します: 1、ページの総数、2、ページごとの記事数。2 番目のステップ、for ($i = 0)。 ; $i
コードをコピー
コードは次のとおりです。 > $fp = fopen ("temp .html","r"); $content = fread ($fp,filesize ("temp.html")); $onepage = '20' ; $sql = "チャネル='$channelid' の記事から ID を選択します";
$num = mysql_num_rows ($query); = ceil ($num / $onepage);for ($i = 0;$iif ($i == 0){
$indexpath = "インデックス.html";
} else {
$indexpath = "index_".$i."html";
}
$start = $i * $onepage;
$list = ' ';
$sql_for_page = "チャネル='$channelid' の記事から名前、ファイル名、タイトルを選択 $start,$onepage";
$query_for_page = mysql_query ($sql_for_page); result = $query_for_page){
$list .= ''.$title.''
}
$content = str_replace ("{articletable }",$list,$content); if (is_file ($indexpath)){
@unlink ($indexpath); // ファイルが既に存在する場合は削除します
}
$handle = fopen ($indexpath,"w") / /ファイル ポインタを開いてファイルを作成します
/*
ファイルが作成され、書き込み可能かどうかを確認します
*/
if (!is_writable ($indexpath)){
echo "ファイル: 「.$indexpath.」は書き込み可能ではありません。プロパティを確認してください。もう一度お試しください。 "; //echo
}
if (!fwrite ($handle,$content)){ //ファイルへの情報の書き込み
echo "Generate file".$indexpath." 失敗しました! "; // echo
}
fclose ($handle); // ポインタを閉じる
}
fclose ($fp);
die ("ページング ファイルの生成が完了しました。生成されました 不完全です。ファイル権限システムを確認して再生成してください! ");
?>
一般的なアイデアは次のとおりです。その他のデータ生成、データ入出力チェック、ページング コンテンツ ポインティングなどを必要に応じてページに追加できます。
実際の記事システムの処理プロセスでは、考慮すべき点がまだ多くあり、動的ページとは異なる点に注意する必要があります。しかし、一般的な考え方はこれであり、他の側面も類推して導き出すことができます。
PHP を使用して静的 Web サイト用のテンプレート フレームワークを作成します
テンプレートを使用すると、Web サイトの構造を改善できます。この記事では、PHP 4 の新機能とテンプレート クラスを使用して、多数の静的 HTML ページで構成される Web サイトのページ レイアウトをテンプレートを巧みに使用して制御する方法について説明します。
概要:
========================================
機能とレイアウトを分離
ページ要素の重複を避ける
静的 Web サイト用のテンプレート フレームワーク
========================= ======== ===
機能とレイアウトの分離
まず、テンプレートを適用する 2 つの主な目的を見てみましょう:
機能 (PHP) とレイアウトの分離 ( HTML)
ページ要素の繰り返しを避ける
最初の目的は最も話題になっている目的であり、プログラマーのグループがページのコンテンツを生成する PHP スクリプトを作成し、別のデザイナーのグループがページのコンテンツをデザインする状況を想定しています。ページのコンテンツの最終的な外観を制御する HTML とグラフィック。機能とレイアウトを分離するという基本的な考え方は、これら 2 つのグループの人々が独立したファイルのセットを作成して使用できるようにすることです。プログラマは、PHP コードのみを含むファイルのみを気にする必要があり、外観を気にする必要はありません。ページ
とページ デザイナーのページに埋め込まれた PHP コードが壊れることを心配することなく、使い慣れたビジュアル エディターを使用してページ レイアウトをデザインできます。
PHP テンプレートに関するチュートリアルをいくつか見たことがあれば、テンプレートがどのように機能するかをすでに理解しているはずです。単純なページ パーツを考えてみましょう。ページの上部はヘッダー、左側はナビゲーション バー、残りはコンテンツ領域です。この種類の Web サイトには、次のテンプレート ファイルを含めることができます。
コードをコピーします コードは次のとおりです:
;

/a>
Bar これらのテンプレートからページがどのように構築されているかを確認できます。メイン テンプレートはページ全体のレイアウトを制御します。 ; header テンプレートと leftnav テンプレートは、ページの共通要素を制御します。中括弧「{}」内の識別子はコンテンツのプレースホルダーです。テンプレートを使用する主な利点は、インターフェイス設計者がフォントの設定、色やグラフィックの変更、ページのレイアウトの完全な変更など、希望に応じてこれらのファイルを編集できることです。これらのファイルには HTML コードのみが含まれており、PHP コードは含まれていないため、インターフェイス設計者は、通常の HTML エディタまたは視覚化ツールを使用してこれらのページを編集できます。
PHP コードはすべて別のファイルに保存されます。これは、ページ URL によって実際に呼び出されるファイルです。 Web サーバーは PHP エンジンを通じてファイルを解析し、結果をブラウザに返します。一般に、PHP コードは、データベースへのクエリや特定の計算の実行など、常にページ コンテンツを動的に生成します。以下に例を示します。
コードをコピー
コードは次のとおりです。
// 例.php require('class.FastTemplate.php');
$tpl = new FastTemplate('.');$tpl->define( array( 'main' => 'main') .htm' ,
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) )
// ここでの PHP コードは、以下が含まれるように $content を設定します。適切なページ content
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header'); parse( 'LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN'); ;
ここでは人気のある FastTemplate テンプレート クラスを使用していますが、基本的な考え方は他の多くのテンプレート クラスでも同じです。まず、クラスをインスタンス化し、テンプレート ファイルの場所と、どのテンプレート ファイルがページのどの部分に対応するかを指示します。次に、ページ コンテンツを生成し、その結果をコンテンツ識別子に割り当てます。次に、各テンプレート ファイルを順番に解析します。テンプレート クラスは必要な置換操作を実行し、最終的に解析結果がブラウザに出力されます。
このファイルは完全に PHP コードで構成されており、HTML コードが含まれていません。これが最大の利点です。 PHP プログラマーは、最終ページを適切にフォーマットするための HTML を生成する方法を気にすることなく、ページのコンテンツを生成するコードの作成に集中できるようになりました。
このメソッドと上記のファイルを使用して、完全な Web サイトを構築できます。 http://www.foo.com/example.php?article=099 など、PHP コードが URL 内のクエリ文字列に基づいてページ コンテンツを生成する場合、これに基づいて完全な雑誌 Web サイトを構築できます。
テンプレートの使用には 2 番目の利点があることは簡単にわかります。上の例に示すように、ページの左側にあるナビゲーション バーは別のファイルとして保存されています。Web サイトのすべてのページの左側にあるナビゲーション バーを変更するには、このテンプレート ファイルを編集するだけです。
ページ要素の重複を避ける
「これはとても良いことだ」と思うかもしれません。「私の Web サイトは主に多数の静的ページで構成されています。これで、すべてのページからそれらの共通部分を削除できます。これらを更新する 公開部分は面倒すぎる。将来的には、テンプレートを使用して管理しやすい統一されたページ レイアウトを作成できるようにする。「しかし、物事はそれほど単純ではありません。」「静的なページが多数ある」という問題が明らかになります。
上記の例を考えてください。この例には実際には example.php ページが 1 つしかありません。Web サイト全体のすべてのページを生成できるのは、URL 内のクエリ文字列を使用してデータベースなどの情報ソースからページを動的に構築しているためです。
私たちのほとんどは、必ずしもデータベースをサポートしていない Web サイトを運営しています。私たちの Web サイトの大部分は静的なページで構成されており、PHP を使用して検索エンジンやフィードバック フォームなどの動的な機能をあちこちに追加しています。では、この種の Web サイトにテンプレートを適用するにはどうすればよいでしょうか?
最も簡単な方法は、各ページ
の PHP ファイルをコピーし、PHP コード内のコンテンツを表す変数を各ページの適切なページ コンテンツに設定することです。たとえば、home、about、product という 3 つのページがあるとします。それぞれを生成するために 3 つのファイルを使用できます。これら 3 つのファイルの内容は次のようになります。
コードをコピー コードは次のとおりです。
/ / home.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) ); p>ようこそ訪問

このウェブサイトを気に入っていただければ幸いです
";$tpl-> ('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
明らかに、これはこのアプローチには 3 つの問題があります。この複雑なテンプレートに関係する PHP コードをページごとに複製する必要があるため、ページの保守が困難になるだけでなく、共通のページ要素が複製されることになります。ファイルには HTML と PHP コードが混在しています。コンテンツ変数に値を代入することは、多くの特殊文字を処理する必要があるため、非常に困難になります。
この問題を解決する鍵は、PHP コードと HTML コンテンツを分離することです。ファイルからすべての HTML コンテンツを削除することはできませんが、PHP コードの大部分を移動することはできます。 静的 Web サイト テンプレート フレームワーク
まず、以前と同様に、ページのすべての共通要素とページ全体のレイアウトのテンプレート ファイルを作成し、すべてのページから共通部分を削除して、ページ コンテンツのみを残します。 add 次のように、各ページに 3 行の PHP コードを追加します。
コードをコピーします
コードは次のとおりです: php
;このウェブサイトを気に入っていただければ幸いです
この方法は基本的に、前述のさまざまな問題を解決します。ファイル内には現在 PHP コードが 3 行しかなく、その中にはテンプレートを直接参照していないため、このコードを変更する可能性は非常に低いです。また、HTML コンテンツは PHP マークアップの外側にあるため、特殊文字の処理に問題はありません。これら 3 行の PHP コードをすべての静的 HTML ページに簡単に追加できます。
require 関数は、必要なテンプレート関連のすべての PHP コードを含む PHP ファイルを導入します。 pageStart 関数はテンプレート オブジェクトとページ タイトルを設定し、pageFinish 関数はテンプレートを解析して結果を生成し、ブラウザに送信します。
これはどのようにして達成されるのでしょうか? pageFinish 関数が呼び出されるまで、ファイル内の HTML がブラウザに送信されないのはなぜですか?答えは、ブラウザーに出力されたコンテンツをバッファーにインターセプトできるようにする PHP 4 の新機能にあります。 prepend.php の具体的なコードを見てみましょう:
コードをコピーします コードは次のとおりです:
< ;?php
require('class.FastTemplate.php');
function pageStart($title = '') {
GLOBAL $tpl;
$tpl = new FastTemplate('.') ;
$ tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav'=> ' leftnav.htm' ) );
$tpl->assign('TITLE', $title);
}
function pageFinish() {
GLOBAL $tpl ;
$ content = ob_get_contents();
$tpl->assign('CONTENT', $content); 'ヘッダー');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main'); ;FastPrint('MAIN ');
}
?>
pageStart 関数は、まずテンプレート インスタンスを作成して設定し、次に出力キャッシュを有効にします。この後、ページ自体のすべての HTML コンテンツがキャッシュに入ります。 pageFinish 関数は、キャッシュからコンテンツを取り出し、これらのコンテンツをテンプレート オブジェクトに指定し、最後にテンプレートを解析して完成したページを出力します。
これは、テンプレート フレームワーク全体の作業プロセス全体です。まず、Web サイトの各ページに共通の要素を含むテンプレートを作成し、次にすべてのページから共通のページ レイアウト コードをすべて削除し、変更する必要のない 3 行の PHP コードに置き換えてから、FastTemplate クラス ファイルを追加します。 php をインクルード パスに追加すると、ページ レイアウトを一元管理できる Web サイトが得られ、信頼性と保守性が向上し、Web サイト レベルでの大規模な変更が非常に容易になります。
この記事のダウンロード パッケージには、実行可能なサンプル Web サイト
PHP は静的ページを簡単に生成します
コードをコピーします
コードは次のとおりです: /*
* ファイル名:index.php*/
require "conn.php";
$query = "select * from news order by datetime desc"; mysql_query($ クエリ);
title | 公開時刻 |
= $re["datetime"]?> |
|
|

Golang中最好的缓存库是什么?我们来一一比较。在编写Go代码时,经常需要使用缓存,例如存放一些比较耗时的计算结果或者从数据库中读取的数据等,缓存能够大大提高程序的性能。但是,Go语言没有提供原生的缓存库,所以我们需要使用第三方的缓存库。在这篇文章中,我们将一一比较几个比较流行的Go缓存库,找到最适合我们的库。GocacheGocache是一个高效的内存缓

如何通过PHP在FTP服务器上进行目录和文件的比较在web开发中,有时候我们需要比较本地文件与FTP服务器上的文件,以确保两者之间的一致性。PHP提供了一些函数和类来实现这个功能。本文将介绍如何使用PHP在FTP服务器上进行目录和文件的比较,并提供相关的代码示例。首先,我们需要连接到FTP服务器。PHP提供了ftp_connect()函数来建立与FTP服务器

随着Web开发的需求不断增加,各种语言的Web框架也逐渐多样化,Go语言也不例外。在许多Go语言的Web框架中,gin、echo和iris是三个最受欢迎的框架。在这篇文章中,我们将比较这三个框架的优缺点,以帮助您选择适合您的项目的框架。gingin是一个轻量级的Web框架,它具有高性能和灵活性的特点。它支持中间件和路由功能,这使得它非常适合构建RESTful

探寻最佳Java爬虫框架:哪个更胜一筹?在当今信息时代,大量的数据在互联网中不断产生和更新。为了从海量数据中提取有用的信息,爬虫技术应运而生。而在爬虫技术中,Java作为一种强大且广泛应用的编程语言,拥有许多优秀的爬虫框架可供选择。本文将探寻几个常见的Java爬虫框架,并分析它们的特点和适用场景,最终找到最佳的一种。JsoupJsoup是一种非常受欢迎的Ja

在移动应用开发领域,Flutter和uniapp是两个备受关注的跨平台开发框架。它们的出现使得开发者能够快速且高效地开发同时支持多个平台的应用程序。然而,尽管它们有着相似的目标和用途,但在细节和特性方面存在一些差异。接下来,我们将深入比较Flutter和uniapp,并探讨它们各自的特点。Flutte是由Google推出的开源移动应用开发框架。Flutter

StringBuffer对象通常可以安全地在多线程环境中使用,其中多个线程可能会尝试访问同一个StringBuffer对象同时。StringBuilder是线程安全的StringBuffer类的替代品,它的工作速度要快得多,因为它没有同步>方法。如果我们在单个线程中执行大量字符串操作,则使用此类可以提高性能。示例publicclassCompareBuilderwithBufferTest{ publicstaticvoidmain(String[]a

MySQL和Oracle:对于数据加密和安全传输的支持程度比较引言:数据安全在如今的信息时代中变得愈发重要。从个人隐私到商业机密,保持数据的机密性和完整性对于任何组织来说都至关重要。在数据库管理系统(DBMS)中,MySQL和Oracle是两个最受欢迎的选项。在本文中,我们将比较MySQL和Oracle在数据加密和安全传输方面的支持程度,并提供一些代码示例。

用户必须输入两个矩阵的顺序以及两个矩阵的元素。然后,比较这两个矩阵。如果矩阵元素和大小都相等,则表明两个矩阵相等。如果矩阵大小相等但元素相等不相等,则显示矩阵可以比较,但不相等。如果大小和元素不匹配,则显示矩阵无法比较。程序以下是C程序,用于比较两个矩阵是否相等-#include<stdio.h>#include<conio.h>main(){ intA[10][10],B[10][10]; in


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版
中国語版、とても使いやすい

ホットトピック









