作者:iwind
原来在dev-club发表的一篇文章,将怎么用模板处理程序PHPlib 中的template.inc实现静态网页的生成,呵呵,居然被列入精华,并被多个网站转载,想来这是荣幸。其实网上这方面的东西很多了,我上此发布的所谓IAMS( iwind 文章管理系统),里面也有,有心人可以看一下。下面我只是简要在总结一次。
现在一般说生成静态网页的方法有三种,一个是配置服务器,大家可以到http://www.devarticles.com/c/b/PHP/ 去找找看,对于这个很多地方都有的。另外一个是用ob_函数控制输出。方法如下:先用ob_start();打开输出缓冲器,然后是对数据的分析,操作等等,跟着用ob_get_contents();获取缓冲区的内容,然后再写入文件。根据这个步骤,可以写出以下程序:
ob_start();
//主体部分,数据操作,处理,输出等等。。。
require”global.php”;
mysql_connect(“localhost”,”root”,””);
…..
//获取缓冲区内容
$contents=ob_get_contents();
//如果不想输出任何东西,可以加上这句
ob_end_clean();
//写入目的文件
$fp=@fopen($targetFile,”w+”) or die(“打开文件时出错”);
fwrite($fp,$contents);
?>
这样就把这个动态页面的内容写入了静态页面,$targetFile.像有的网站首页内容很多,要调用n多个查询语句时,不妨定时生成静态网页,既大幅提高了访问速度,也减轻了服务器负担。
你可以看出来,我用ob_只是处理单个页面,对于批量写入或更新多个页面,这个方法就不行了。这就是我要讲的第三种方法,用模板。模板是个好东东,现在大家都或多或少在用它,建议还不会简单模板处理的网友,花点时间去学它,一般的模板处理程序都很简单的。用模板实现静态网页的生成是非常简单的,方法就是获取分析结果,把分析结果写入文件。下面就以PHPlib中的template.inc来谈谈如果用模板生成静态网页。
一, 修改template.inc
加入以下的几个函数:
//将分析结果保存到文件中去
function savetofile ($dir,$varname){
$data=$this->finish($this->get_var($varname));
$fp=fopen($dir,"w+");
fwrite($fp,$data);
}
//清除已赋值数组
function renew(){
$this->varkeys=array();
$this->varvals=array();
$this->file=array();
}
第一个函数是结果保存到静态文件中,第二个是把所有的模板分析变量都置为空,以免批量处理时相互影响。
二,实现静态网页生成。
$itpl->set_file(“main”,”mian.tpl”);
//分析模板变量
…..
//分析mainmains
$tpl->parse("mains","main");
//把分析结果mains存入main.html
$tpl->savetofile("main.html","mains");
//置空
$tpl->renew();//至关重要
?>
はは、とてもシンプルですね? main.html は私たちが必要とするコンテンツです。以下は、データベースを結合し、関数でカプセル化する例です。
//$aid はデータベース内の記事 ID、$table はテーブル名、$template はテンプレート アドレス、$tpl は template.inc のインスタンスです
//各補助は静的Webページアドレス、それらはすべてデータテーブルに存在します
//テーブルの構造は補助3 a3.html….
functionstaticInfo($ aid){
グローバル$テーブル、$テンプレート、$ tpl;
/ /データベースをクエリします
$res=mysql_query(“select * from $table where aid='$aid'”);
//データを取得します
$array=mysql_fetch_array ($res);
//静的な Web ページのアドレスを読み取り、タイトル。
$target=$array[“target”];
$title=$array[“title”];
//分析テンプレート
$tpl->set_file(“main”,$template);
// template $title の {title} 変数を置き換えます
$itpl->set_var("title",$title");
//テンプレート全体を分析します
$itpl->set_var("mains","main") ;
//メインをファイルに書き込みます
$tpl->savetofile($target,"mains");
//空白のままにしておきます
$tpl->renew();
}
?>
この方法関数 staticInfo() を使用して、処理したい記事の静的 Web ページを生成できます。テーブル $target には、記事のコンテンツ、著者、ソースなども含めることができます。方法は同じです。静的 Web ページを更新します
記事がデータベースに追加された後は、静的 Web ページのターゲット アドレスがすでに設定されているため、現時点では、対応する静的 Web ページを再生成するだけで済みます。
記事の静的 Web ページを生成するための重要なポイントは、前者を最初に決定することができます。後者は、各記事のアドレスを自由に設定できます。一般的に使用されるのは 1、タイムスタンプ 2、時、分、秒、3 です。これは、これらの繰り返しが発生する可能性が非常に低いためです。静的 Web ページをバッチで作成します。
単一の記事によって生成された静的 Web ページの関数は非常に単純で、すべての記事の支援を取得してから、関数を挿入します。// テンプレート クラスを参照します。
require"template.inc";//関数の概要
require"functions.php";//いくつかの変数の定義
$table="art";
$template="template/info.tpl";
$tpl=new Template(".");
//mysqlに接続、データベースを選択
mysql_connect("localhost","root',"");
mysql_select_db("article");
//クエリステートメントを送信
$res=mysql_query("select aid from $table");
while($r=mysql_fetch_array($res)){
$aid=$r["aid"];
//静的 Web ページを生成
staticInfo($ aid);
}
//End
echo" すべての静的 Web ページの更新/生成が成功しました";
?>
上記は完全な例です。私たちの CMS プロセスは次のようになります:
1. 記者が原稿を公開します (原稿の内容をデータベースに入れます)
2. 編集者がレビューします (公開できると判断した場合は、コンテンツを静的 Web ページに生成できます)
3.原稿を返却する(原稿内容をデータベースに入れる)生成された静的Webページを削除し、データベース内のコンテンツを削除する)
すると、訪問したWebサイトのコンテンツは静的になります。 1 つの質問は、この方法は多くのスペースを必要とするかということです。 http://www.knowsky.com には数千の記事があり、占有スペースはわずか 2,000 万です。一方、10,000 件の記事がある場合、200M のスペースを購入するほどケチることはありませんよね?
静的な記事リストの生成について混乱しているかもしれません。これは、ページ番号を計算する ≈ それぞれを分析することです。 ページ番号の内容→ ファイルに書き込まれます。 各ページ番号の内容を分析するには、もちろん関数を記述する必要があります。これをページごとに生成すると、笑われると思います^_^。
静的Webページは、サーバーの負荷を軽減し、アクセス速度を向上させるだけでなく、簡単にバックアップできるミラーWebサイトとしても使用でき、攻撃による損失を軽減し、復元速度を高速化します。もちろん、静的な Web ページは誰にとっても多くの不便をもたらします。また、動的と静的な間のバランスをとる必要があります。js によって呼び出される PHP コードを静的な Web ページに追加して、カウントや即時更新などを実現することもできます。 (終わり)

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

XSS攻撃を防ぎ、リソースのロードを制限し、ウェブサイトのセキュリティを改善できるため、CSPは重要です。 1.CSPはHTTP応答ヘッダーの一部であり、厳格なポリシーを通じて悪意のある行動を制限します。 2。基本的な使用法は、同じ起源からのロードリソースのみを許可することです。 3.高度な使用法は、特定のドメイン名がスクリプトやスタイルをロードできるようにするなど、より微調整された戦略を設定できます。 4。CSPポリシーをデバッグおよび最適化するには、コンテンツセキュリティポリシーレポートのみのヘッダーを使用します。

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

HTTPSは、HTTPに基づいてセキュリティレイヤーを追加するプロトコルであり、主に暗号化されたデータを介してユーザーのプライバシーとデータセキュリティを保護します。その作業原則には、TLSの握手、証明書の確認、暗号化された通信が含まれます。 HTTPSを実装する場合、証明書管理、パフォーマンスへの影響、および混合コンテンツの問題に注意を払う必要があります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

ホットトピック



