私たちは皆、PHP の威力を知っています。最近、PHP WEB サーバーに関する関連知識を目にしました。この問題について話し合いましょう。 WAP (ワイヤレス通信プロトコル) は、デジタル携帯電話、個人用ハンドヘルド デバイス (PDA など)、およびコンピュータ間の通信のためのオープンな世界標準です。静的な WAP ページは多くの点でユーザーのパーソナライズされたサービス要求に応えることができないため、WAP サーバー側言語を通じて生成される動的な WML ページには幅広い応用価値と高い商業的価値があります。
上記の WAP アプリケーション プロセスからわかるように、動的な WAP ページを生成するプロセスは、Web ページを動的に生成するプロセスと非常によく似ています。ただし、WAP アプリケーションで使用される WML 言語は厳密な構文の XML から派生しているため、出力形式は WAP Web ページの仕様に従って出力する必要があります。同時に、WAP プロトコルの適用範囲とモバイル クライアントのソフトウェアおよびハードウェア レベルにより、毎回のページ出力のサイズ、画像の形式と容量に一定の制限があります。 PHP スクリプト言語を例として、WAP ページを動的に出力する方法を見てみましょう。
1. PHP WEB サーバーをセットアップする
まず、PHP スクリプトを処理できるように、Web サーバーに PHP がインストールされている必要があります。次に、PHP WEB サーバーが PHP、WML、WBMP およびその他のファイルを同時に認識して処理できるようにするには、次のファイル タイプを Web サーバーの MIME テーブルに追加する必要があります。
<ol class="dp-xml"> <li class="alt"><span><span>text/vnd.wap.wml .wml </span></span></li> <li class=""><span> </span></li> <li class="alt"><span>image/vnd.wap.wbmp .wbmp </span></li> <li class=""><span> </span></li> <li class="alt"><span>application/vnd.wap.wmlc .wmlc </span></li> <li class=""><span> </span></li> <li class="alt"><span>text/vnd.wap.wmls.wmls </span></li> <li class=""><span> </span></li> <li class="alt"><span>application/vnd.wap.wmlsc .wmlsc </span></li> </ol>
2. PHP を使用して、単純な動的 WAP ページを出力します
ここでは、PHP を使用して WAP ページを生成する最も単純な例を示します。このプログラムを解釈して WAP ページを出力するには PHP インタープリターが必要であるため、同様のプログラムはすべて .php 拡張子を持つ必要があることに注意してください。
<ol class="dp-xml"> <li class="alt"><span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN></FONT></STRONG><SPAN> </SPAN></SPAN><LI class=""><SPAN>header(″Content-type: text/vnd.wap.wml″); </SPAN><LI class=alt><SPAN>echo (″</SPAN><STRONG><FONT color=#006699><SPAN class=tag><</SPAN><SPAN class=tag-name>wml</SPAN><SPAN class=tag>></span></font></strong><span> </span><strong><font color="#006699"><span class="tag"><</SPAN><SPAN class=tag-name>card</SPAN><SPAN class=tag>></span></font></strong><span> </span><strong><font color="#006699"><span class="tag"><</SPAN><SPAN class=tag-name>p</SPAN><SPAN class=tag>></span></font></strong><span>″); </span></span></li> <li class=""><span>echo date( ″l dS of F Y h:i:s A″ ); </span></li> <li class="alt"> <span>echo (″</span><strong><font color="#006699"><span class="tag"></</SPAN><SPAN class=tag-name>p</SPAN><SPAN class=tag>></span><span class="tag"></</SPAN><SPAN class=tag-name>card</SPAN><SPAN class=tag>></span><span class="tag"></</SPAN><SPAN class=tag-name>wml</SPAN><SPAN class=tag>></span></font></strong><span>″); </span> </li> <li class=""> <span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span> </li> </ol>
この例は、WAP 携帯電話シミュレータで閲覧でき、現在の日付と時刻が出力されますが、通常のブラウザでは認識できず、エラー ダウンロードとみなされる可能性もあります。これは、出力ドキュメントがプログラムの先頭で WML タイプとして宣言されており、このタイプは WAP デバイスによってのみ認識および解釈できるためです。私たちの一般的な HTML 言語には厳格な規範要件がなく、ほとんどのブラウザーはかなり多くの書き込みエラーを「許容」できますが、WML の仕様は非常に厳格であり、1 つの間違いが必要なデータを出力できない可能性があることに注意してください。ページ。
PHP スクリプトを使用して WAP ページを出力する標準プロセスを理解したら、PHP の強力な機能と WML 言語の対話型処理および WML スクリプトの単純なスクリプトを使用して、ニーズに合ったアプリケーション システムを開発できます。
3. PHP を使用して画像を動的に生成します
WAP アプリケーションは特別な白黒画像形式 WBMP を使用します。いくつかのツールを使用して既存の画像を WBMP 形式に変換し、WML ドキュメントで使用できます。しかし、K線図などの必要な画像をWAPサイト上で動的に生成できれば応用の可能性は広がります。幸いなことに、PHP の GD ライブラリ (バージョン 1.8 以降) は、対応する関数をすでに提供しています。
<ol class="dp-xml"><li class="alt"> <span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>PHP</SPAN></FONT></STRONG><SPAN> </SPAN></SPAN><LI class=""><SPAN>Header(″Content-type: image/vnd.wap.wbmp″); </SPAN><LI class=alt><SPAN></SPAN><SPAN class=attribute><FONT color=#ff0000>Sim</FONT></SPAN><SPAN> = </SPAN><SPAN class=attribute-value><FONT color=#0000ff>ImageCreate</FONT></SPAN><SPAN>(50, 50); </SPAN></SPAN><LI class=""><SPAN></SPAN><SPAN class=attribute><FONT color=#ff0000>Swhite</FONT></SPAN><SPAN> = </SPAN><SPAN class=attribute-value><FONT color=#0000ff>ImageColorAllocate</FONT></SPAN><SPAN>(Sim,255,255,255); </SPAN></SPAN><LI class=alt><SPAN></SPAN><SPAN class=attribute><FONT color=#ff0000>Sblack</FONT></SPAN><SPAN> = </SPAN><SPAN class=attribute-value><FONT color=#0000ff>ImageColorAllocate</FONT></SPAN><SPAN>(Sim,0,0,0); </SPAN></SPAN><LI class=""><SPAN>ImageRectangle(Sim, 5, 5, 20, 20, Sblack); </SPAN><LI class=alt><SPAN>ImageWBMP(Sim); ImageDestroy(Sim); </SPAN><LI class=""><SPAN></SPAN><SPAN class=tag><STRONG><FONT color=#006699>?></span></font></strong></span><span> </span> </li></ol>
このファイルは、WAP エミュレータに黒い長方形のボックスを表示します。 GD イメージ関数ライブラリを使用するには、PHP_GD.DLL ライブラリ ファイルが PHP WEB サーバー構成にロードされている必要があることに注意してください。
4. PHP での中国語の文字の処理
WAP はグローバル アプリケーションとして、英語、中国語、日本語、フランス語などを含む複数のテキストを同時に処理できるように、標準の文字セット エンコーディングとして UNICODE 2.0 を選択しました。時間。中国語の文字を処理する場合、通常は GB2312 エンコーディングを使用します。異なる内部コード規格には互換性がないため、コード テーブルを使用して 2 つのエンコーディング間で変換しないと、文字化けが発生します。 GB-2312 および UNICODE エンコード変換用の比較的成熟したプログラムと関数がすでに存在しており、それらは ASP、PHP、JSP などのシステムで使用されており、いくつかのテクノロジー サイトで見つけることができます。
現在のほとんどの WAP 電話 (Nokia7110、Ericsson R320S など) は、UNICODE でエンコードされた UTF-8 エンコードを使用します。このように、WML で中国語の文字 (GB2312 エンコード) を直接使用すると、携帯電話ユーザーが認識できない文字化けが発生するため、中国語を出力する前に、中国語を UNICODE でエンコードするプログラムまたは関数を使用する必要があります。 。 GB2312 エンコードをサポートするいくつかの携帯電話または WAP 端末デバイスでは、プログラム内でドキュメントの内部コード タイプを定義した後、中国語の文字を直接かつ正確に表示できます。例:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN><SPAN> </SPAN></SPAN><LI class=""><SPAN>header(″Content-type: text/vnd.wap.wml; </SPAN><SPAN class=attribute>charset</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>gb2312</SPAN><SPAN>″); </SPAN></SPAN><LI class=alt><SPAN>echo (″</SPAN><SPAN class=tag><</SPAN><SPAN class=tag-name>wml</SPAN><SPAN class=tag>></span><span class="tag"><</SPAN><SPAN class=tag-name>card</SPAN><SPAN class=tag>></span><span class="tag"><</SPAN><SPAN class=tag-name>p</SPAN><SPAN class=tag>></span><span>″); </span></span></li> <li class=""><span>echo (″中文测试″); </span></li> <li class="alt"> <span>echo (″</span><span class="tag"></</SPAN><SPAN class=tag-name>p</SPAN><SPAN class=tag>></span><span class="tag"></</SPAN><SPAN class=tag-name>card</SPAN><SPAN class=tag>></span><span class="tag"></</SPAN><SPAN class=tag-name>wml</SPAN><SPAN class=tag>></span><span>″); </span> </li> <li class=""> <span></span><span class="tag">?></span><span> </span> </li> </ol>