世界中の 300 万人以上のインターネット Web サイト管理者が PHP を使用しており、PHP は最も人気のあるサーバーサイド スクリプト言語の 1 つとなっています。高速な実行速度、安定性、信頼性、クロスプラットフォーム、オープンソース ソフトウェアが特徴です。使用レベルに応じて、PHP は単純にも複雑にもなり、HTML テーブル要素を送信するためだけに使用することも、Java と XML を PHP アプリケーションに統合することもできます。
PHP についてある程度の理解がある場合、または予備的な教科書を読んだことがある場合、これらのテクニックによって PHP の理解が広がり、いくつかの一般的かつ高度な PHP 機能を習得できるようになります。
1. PHP を Apache DSO としてインストールする
PHP は、Linux/Unix プラットフォームで Apache とともに使用されることが多く、静的モード、動的モード (DSO)、CGI バイナリ モードの 3 つのインストール方法から選択できます。
メンテナンスとアップグレードが容易なため、PHP を DSO モードでインストールすることを強くお勧めします。たとえば、インストールされた PHP が初期インストール時にデータベースのみをサポートし、その後暗号化をサポートするモジュールをインストールする場合は、「make clean」を実行し、新しい構成オプションを追加してから、「make」と「make install」を実行します。 1 つ 新しい PHP モジュールが Apache の適切な場所にインストールされ、Apache を再コンパイルせずに Apache が再起動されます。
次の手順では、新しい Apache をインストールし、DSO モードで PHP をインストールします。
1. Apache Software Foundation から最新バージョンの Apache ソース コードを入手します。
2. 入手したソース コードを /usr/local/ に置きます。または /opt/ ディレクトリ、または指定した任意のディレクトリ
3. Gunzip を実行してファイルを解凍し、拡張子 .tar が付いたファイルを取得します。 4. 次のコマンドを実行して、ファイルを apache_[version] にインストールします。 ] ディレクトリ:
tar -xvf apache_[version].tar
5. /usr/local/apache_[version] ディレクトリ (または手順 4 で圧縮ファイルをインストールしたディレクトリ) を入力します
6. 次のように入力します。 Apache のコンパイルを準備する次のコマンド。[path] を独自のパス (例: /usr/local/apache[version]) に置き換えます。mod_so の新しい値が設定されたので、Apache が DSO を使用できるようになります。 ; module.
7. プロンプト状態に戻ったら make と入力し、再度プロンプト状態に戻るまで待ちます
8. 「make install」コマンドを実行します。
この時点でApacheはインストールされており、システムはプロンプト状態に戻ります。次に、PHP のインストールを開始します:
1. PHP ホームページのダウンロード領域で最新バージョンへのリンクを見つけます
2. /usr/local/ や /opt などの適切なディレクトリにファイルをダウンロードします。 / または、指定したディレクトリ内で
3. Gunzip を実行してファイルを解凍し、拡張子 .tar が付いたファイルを取得します。 4. 次のコマンドを実行して、ファイルを php-[version] ディレクトリにインストールします。
tar - xvf php-[version]
5. /usr/local/php-[version] ディレクトリまたは手順 4 で指定したディレクトリを入力します
この時点で、DSO モードで PHP をインストールする準備が整いました。必要な唯一のことは、変更された構成オプションが with-apxs (これは Apache の bin ディレクトリ内のファイルです) であることです。より高いパフォーマンスを得るために、MySQL のサポート モジュールはインストールしませんでした。
./configure --with-mysql=/[mysqlへのパス] --with-apxs=/[apxsへのパス]
6. プロンプト状態に戻ったらmakeコマンドを実行し、プロンプト状態に戻るまで待ちます。プロンプト状態
7. make install コマンドを実行します。
この時点で、システムは DSO モードで Apache のモジュール ディレクトリに PHP をインストールし、Apache の httpd.conf ファイルに適切な変更を加えて、プロンプト状態に戻りました。プロンプト状態に戻った後も、Apache の httpd.conf ファイルにいくつかの変更を加える必要があります。
1. 以下に示すように、ServerAdmin を含む行を見つけてメール アドレスを追加します:
ServerAdmin you@yourdomain.com
2. ServerName で始まる行を見つけて、実際の値に変更します。たとえば、次のようになります。
ServerName localhost
3. 次の内容のセクションを見つけます:
# PHP 4.x の場合は、次を使用します:
#
#AddType application/x-httpd-php .php
#AddType application /x-httpd-php-source .phps
これらの行の内容をPHP 4.0のAddTypeがコメントではなくなるように修正し、PHPで使いたいファイルのサフィックスを追加すると上記の内容になります。以下に示す:
# そして、PHP 4.x の場合は、次を使用します:
ファイルを保存し、上のディレクトリに戻り、次のコマンドを実行して Apache を再起動します:
./bin/apachectl start
起動中にエラーメッセージが表示されない場合は、phpinfo.php という名前のファイルのみを作成できます ファイルを使用します以下に示すように、インストールされている Apache と PHP をテストする 1 行のコンテンツを追加します。
phpinfo() ?> このファイルを Apache のドキュメント ルート ディレクトリ (htdocs) に保存し、ブラウザを開き、http と入力します。 ://localhost/phpinfo.php アドレスと、多くの変数とその値が画面に表示されます。
PHP を再設定したい場合は、make clean コマンドを再度実行し、一連のオプションを指定して ./configure コマンドを実行し、次に make および make install コマンドを実行する必要があります。新しいモジュールが Apache に表示されます。 Apache を再起動してこの新しいモジュールをロードすれば、すべて問題ありません。
2. PHP 自体を使用したダイアログ
PHP 4.0 の最も期待されている機能は、ダイアログのサポートである必要があります。そうでない場合は、ダイアログをサポートしていないことが常に PHP の最大の問題です。欠点の 1 つ。
ユーザーがウェブサイトを閲覧している限り、複数の Cookie を作成したり、非表示のテーブル フィールドを使用したり、データベースに情報を保存したりすることなく、会話を使用して特定のユーザーに関連する変数を維持できます。
Web ページでセッションを開始すると、セッションを開始するか (まだ開始されていない場合)、現在のセッションを継続するかが PHP エンジンに通知されます。
session_start();
セッションの開始が送信されます。識別文字列 (例: 940f8b05a40d5119c030c9c7745aead9) サーバー側で、識別文字列に一致する一時ファイル (sess_940f8b05a40d5119c030c9c7745aead9 など) が作成されます。このファイルには、登録された会話変数とその値が含まれます。
ダイアログの役割を示すために使用される最も一般的な例は、アクセスカウンターです。 PHP モジュールを開始し、PHP コードがファイルの最初の行であることを確認します。PHP コードの前にスペース、HTML コード、またはその他のコードがあってはなりません。セッションはヘッダーを送信するため、session_start() の前にスペースや HTML コードがあると、エラー メッセージが表示されます。
<
// 特定のユーザーがまだいない場合は、会話を開始します:
session_start();
次に count という名前の変数を登録します:
session_register('count') ;
ダイアログ変数を登録すると、ダイアログが存在する限りcountという変数も存在します。ここで、count 変数には値が割り当てられていません。これに 1 を加えると、その値は 1 になります。
$count++;
上記の内容をまとめると、会話が開始されていない場合は、ユーザーに会話 ID を指定して $count 変数という名前を登録するだけで会話が開始されます。 $count に 1 を追加すると、ユーザーが初めて Web ページにアクセスしたことを示します。
現在の会話でユーザーがこのページに何回アクセスしたかを知るには、$count 変数の値を表示するだけです:
echo "
$count 回ここに来ました。
";
アクセスカウンター全体のコードは次のとおりです:
session_start();
session_register('count');
$count++;
echo "
ここで $ count 回.
";
?>
上記のスクリプト ファイルをリロードすると、変数 count の値が 1 増加していることがわかります。これは素晴らしいことです。
会話に配列変数を登録することもできます。 $faves という名前の変数を登録するとします。
$faves = array ('chocolate','coffee','beer','linux'); ということができます。単純な変数を登録するのと同じように、配列変数を登録します。 session_register('faves'); 配列変数を参照することは、単純な変数を参照することと何ら変わりません。ユーザーが Web ページ上で自分の趣味を指摘する場合、登録することができます。彼の趣味を $faves という配列変数に保存し、これらの趣味を別の Web ページに簡単に表示します:
session_start();
echo "My user likes:
"; while (list(,$v) = each ($faves)) {
echo "- $v"; }
echo "
?>次に、ユーザーの趣味のリストを取得します。
ダイアログ変数はクエリ文字列で上書きできません。つまり、登録された変数 $count に新しい値を指定するために http:///www.yourdomain.com/yourscript.php?count=56 を入力することはできません。これは非常に重要です。重要: 未登録のダイアログ変数はサーバー側スクリプトでのみ削除できます。
会話変数を完全に削除したい場合は、まずシステムから登録を解除する必要があります:
session_unregister('count');
会話変数を完全に削除するスクリプトは次のように非常に簡単です。 session_destroy() ;
会話変数を使用すると、データベースへのアクセス頻度が減り、コードが明確になり、ユーザーに送信される Cookie の数を減らすことができます。
3. ファイルは私たちの友達です
開発している Web サイトの規模に関係なく、コードが HTML コードであっても PHP コードであっても、コードの再利用の重要性を認識する必要があります。たとえば、著作権情報を含むフッターは少なくとも年に 1 回は変更する必要がありますが、1,000 ページある Web サイトの場合、これは煩わしい作業です。
PHP には、コードの再利用の目的を達成するのに役立つ関数が少なくともいくつかあります。使用される関数は、再利用するコードによって異なります。主な関数は次のとおりです。
* include() と include_once()
* require() と require_once()
include() 関数は、指定されたファイルをインクルードして計算を実行します。例:
include('/home/me/myfile');
インクルード ファイル内のコードは次のとおりです。 include() は、それが表示されるコード スコープ内で実行されます。 include() と fopen() を組み合わせて使用すると、自分のサーバー上の静的ファイルと別のサーバー上のターゲット ファイルをインクルードできます。
include_once() の関数は include() と同じです。 2 つの違いは、ファイル内のコードが既存のスクリプトに既にインクルードされているかどうかを確認することです。コードが既に存在する場合、そのコードはインクルードされません。また。
require() 関数は、それ自体を指定されたファイルの内容に置き換えます。この置換プロセスは、include() のように最初に計算されるのではなく、PHP エンジンがコードをコンパイルするときに発生します。 require() 関数は静的要素でよく使用され、include() は動的要素でよく使用されます。 include_once() と同様に、require_once() は、指定されたコードが挿入されているかどうかを最初に確認します。コードがすでに存在する場合、そのコードは再度挿入されません。
その内容も理解するために、変数を含まない、または他の実行スクリプトに依存しない、著作権情報、静的テキスト、その他の要素で require 関数を使用することを好みます。例:
('/家/私/ mycopyright');
一方、私は多くの関数を制御するためによく使用します:
// 関数ライブラリを取得します
include('/home/me/myfunctions');
// 関数を使って PHP の処理を行います ?>
t; ;/HTML> ;
次の質問は、「インクルード ファイルと要求ファイルはどこにありますか?」です。この質問に対する簡単な答えは、「ユーザー名とパスワードを使用したデータベース接続が含まれている場合」です。確かに、それらすべてをドキュメント ルートに配置して誰でも利用できるようにするわけではありません。
インクルードまたは必須のファイルは、PHP が実行されているシステム上のユーザーがアクセスできる限り、システム上のどこにでも置くことができ、これらのファイルに任意のサフィックスを付けることも、サフィックスを使用しないこともできます。
Web サイト内の要素を指定するために include() と require() を使用するのは一般的な現象であり、Web サイトをアップグレードする必要がある場合に非常に便利です。
4. PHPとファイルシステムのメンテナンス
PHP にはファイル システムに関連する関数が多数あり、これらの関数はファイルを開くだけでなく、ディレクトリの内容を表示したり、ファイルを移動したりすることもできます。インターネット ベースのファイル エクスプローラーを開発するためにも PHP を使用する人がいます。
ファイルパスの説明: Windowsではパスに/と記号を使用できますが、他のオペレーティングシステムでは/記号のみ使用できます。一貫性を保つために、/ 表記を一律に使用します。
次のスクリプト例はディレクトリリストを表示することができ、コードにはコメントが含まれています:
/*読み込むディレクトリのフルパス名を$dir_nameという名前の変数に保存します。 */
$dir_name = "/home/me/";
/* 指定されたディレクトリを開いた結果を値とするハンドルを作成します */
$dir = opendir($dir_name); /* 作成しますリスト要素 (ファイル名) を配置するテキスト ブロック */
$file_list = "
";
/* ファイル名が " でない場合は、while ステートメントを使用して、開いたディレクトリ内のすべての要素を読み取ります。 ." または ".." の場合、リスト内の名前が表示されます*/
while ($file_name = readdir($dir)) {
if (($file_name != ".") && ($ file_name! = "..")) {
$ file_list. = "& lt; li & gt; $ file_name"; ディレクトリを開き、PHP モジュールを終了します*/
closedir($dir) ?>
;
ディレクトリリスト
? $file_list"; ?>
さて、ディレクトリのリストができました。ファイル (これについては後ほど説明します) またはディレクトリの内容を読み取るには、PHP が実行されているシステム上のユーザーが少なくともそのファイルに対する読み取り権限を持っている必要があることに注意してください。
以下はファイルをコピーする方法の例です:
/*コピーする元のファイルのフルパスを $original という名前の変数に代入し、コピーしたファイルのフルパスを に代入します。 $original という変数内に */
$original = "/home/me/mydatabasedump";
$copied = "/archive/mydatabasedumo_1010"; /* copy() 関数を使用します。コピーが完了していない場合は、元のファイルをコピーします。 エラー メッセージが表示されます。 */
@copy($original, $copied) or die("Couldn't copy file."
?>
この例はファイルバックアップシステムのプロトタイプです。このスクリプトを実行すると、ファイルが別の場所にコピーされて保存されます。デーモンをわずかに変更して、ユーザーの介入なしで指定した時刻に実行できるようにします。
システムに Lynx がインストールされていると仮定すると、このファイルにアクセスするためのデーモン エントリを作成できます。このファイルにアクセスすると、このスクリプトが実行され、ファイルのコピーが作成されます。次の例では、このスクリプトを 5 時に実行します。 Lynx:
0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
CGI バージョンを実行している場合。 PHP では、Lynx 部分をスキップして、バイナリ ファイルを直接呼び出すことができます:
0 5 * * * [username] php /path/to/copyfile.php 1>/dev/null 2>&1
5。
PHP 4.0 で追加された 30 の新しい関数 グループ番号に関連する関数の中には、配列に要素が含まれているかどうかを判断したり、配列内の要素をカウントしたり、配列内の要素を追加または削除したり、配列内の要素を並べ替えたりすることができるものがあります。
大きな配列があり、その配列に特定の要素が含まれているかどうかを確認する必要がある場合は、in_array() を使用できます。次の例では、Albert の検索が $namesArray という名前の配列内にあり、そのような要素が $namesArray 配列に存在しないため、「この配列には見つかりません」と表示されます。
< $namesArray = array("ジョー", "ジェーン", "メアリー", "エディ", "ジョン"); $ LookingFor = "アルバート"; if (in_array($ LookingFor, $namesArray)) {
echo "見つかりました!";
} else {
echo "この配列には見つかりません!"
?&g t;
$ LookingFor の値を Mary に変更すると、Mary は $namesArray 配列の要素であるため、「見つけました!」というメッセージが表示されます。
配列内の要素の数を数えたい場合は、単純に count() 関数を使用します:
$namesArray = array("Joe", "Jane", "Bob", "Mary ", " Paul", "Eddie", "John");
$count = count($namesArray); ?>
返される $count の値は 7 です。
配列の先頭または末尾に要素を追加できます。また、array_merge() を使用して、2 つ以上の配列の要素を含む新しい配列を作成することもできます。マージすると、要素の順序は指定された順序になります。 order. 元の配列がソートされており、マージ後に並べ替える必要がある場合。
まず array_push() を使って配列の最後に要素を追加します:
/* 配列を作成します */
$fruitArray = array("apple", "orange", "banana" , " kiwi", "pear");
/*配列に要素を追加します */
array_push($fruitArray, "grape", "pineapple", "Tomato"); /* 各要素とその要素を表示しますシリアル番号 */
while (list($key,$value) = each($fruitArray)) {
echo "$key : $value
"
}
?>上記のプログラムでは以下の結果が得られます:
0 : リンゴ
1 : オレンジ
2 : バナナ
3 : キウイ
4 : 梨
5 : ブドウ
6: パイナップル
7 : トマト
必要に応じて配列の先頭に要素を追加するコードは上記のコードと似ていますが、唯一の違いは、array_push() の代わりに array_unshift() を使用する必要があることです。
Element*/
array_unshift($fruitArray, "grape", "pineapple", "Tomato");
/* 各要素とそのシリアル番号を表示*/
while (list($key,$value) = each ($fruitArray)) {
echo "$key : $value
";
}
?>
上記のプログラムを実行すると、次の結果が得られます。 :パイナップル
2:トマト
3:リンゴ
4:オレンジ
5:バナナ
6:キウイ
7:梨
() 関数は、2 つ以上の配列を 1 つの配列に結合できます。
/*最初の配列を作成します*/
$fruitArray = array("apple", "orange", "banana", "kiwi", "pear"); /*/2 番目の配列を作成します*/
$vegArray = array("キャロット", "インゲン", "アスパラガス", "アーティチョーク", "トウモロコシ");
/*これら 2 つの配列を 1 つの配列にマージします*/
$goodfoodArray = array_merge ($fruitArray, $vegArray);
/* 各要素とシリアル番号を表示*/
while (list($key,$value) = each($goodfoodArray)) {
echo "$ key : $value< ;br>";
}
?>
上記のスクリプトを実行すると、次の結果が得られます:
0 : リンゴ
1 : オレンジ
2 : バナナ
3 : キウイ
4: 梨
5:ニンジン
6: インゲン
7: アスパラガス
8: アーティチョーク
9: トウモロコシ
要素を追加して配列を結合する方法をマスターしたところで、配列から要素を削除する方法を見てみましょう。 array_pop() 関数を使用すると配列の末尾から要素を削除でき、array_shift() 関数を使用すると配列の先頭から要素を削除できます。 array_pop() または array_shift() が配列から要素を削除しても、その要素を変数として使用できます。
配列の末尾から要素を削除するには、array_pop() を使用します:
", "pear");
/* 配列の末尾から要素を削除します*/
$popped = array_pop($fruitArray );
/* 削除された配列の内容と削除した要素を表示します*/
while (list($key,$value) = each($fruitArray)) {
echo "$key : $value< br>";
}
echo "
そして最後に、$popped: $popped";
?>
そして最後に、$popped: pear
から要素を削除する別の例について説明しましょう。配列の末尾:
"kiwi", "pear");
/*配列の先頭から要素を削除*/
$shifted = array_shift($fruitArray);
/* の内容を表示削除された配列と削除された要素* /
while (list($key,$value) = each($fruitArray)) {
echo "$key : $value
"
}
echo "
そして最後に、$shifted: $shifted";
?>
上記のスクリプトを実行すると、次の表示結果が得られます:
0 : オレンジ
1 : バナナ
2 : キウイ
3 : pear
そして最後に、$shifted: apple
配列内の要素を並べ替えることができる関数もいくつかありますが、ここでは基本的な並べ替え関数を簡単に紹介し、並べ替えプロセスについて説明します:
< ;? /*配列を作成* /
$fruitArray = array("apple", "orange", "banana", "kiwi", "pear"); /* 配列を並べ替え*/
sort( $fruitArray);
/ *各要素とシリアル番号を表示*/
while (list($key,$value) = each($fruitArray)) {
echo "$key : $value
" ;
}
>
上記のスクリプトを実行すると、次のような表示結果が得られます:
0 : リンゴ
1 : バナナ
2 : キウイ
3 : オレンジ
4 :梨
6. Dynamics 画像作成
インストールするだけ サードパーティのライブラリ ファイルとジオメトリの知識があれば、PHP を使用して画像を作成および処理できます。実際、私は大学を卒業していないので、まだ PHP を使用して画像を作成できるため、これには幾何学の知識はあまり必要ありません。
基本的な画像作成機能を使用する前に、GDライブラリファイルをインストールする必要があります。 JPEG 関連の画像作成機能を使用する場合は、jpeg-6b もインストールする必要があります。画像で Type 1 フォントを使用する場合は、t1lib をインストールする必要があります。
イメージ作成環境を構築する前に、いくつかの準備作業を行う必要があります。まず、t1lib をインストールし、次に jpeg-6b をインストールし、次に GD ライブラリ ファイルをインストールします。 GD をライブラリとしてコンパイルする際に jpeg-6b が使用されるため、インストールする際はここで指定した順序でインストールする必要があります。jpeg-6b がインストールされていないとコンパイル時にエラーが発生します。
これら 3 つのコンポーネントをインストールした後も、PHP を再構成する必要があります。これが、PHP のインストールに DSO を使用してよい理由の 1 つです。 make clean を実行し、次の内容を現在の構成に追加します:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b ]
--with-t1lib=[/path/to/t1lib]
追加が完了したらmakeコマンドを実行し、続いてmake installコマンドを実行します。 Apache を再起動した後、phpinfo() を実行して、新しい設定が有効になっているかどうかを確認します。これで、イメージの作成作業を開始できます。
インストールされている GD ライブラリ ファイルのバージョンに応じて、GIF または PNG 形式のグラフィック ファイルを作成できる場合とできない場合があります。 gd-1.6 以前のバージョンがインストールされている場合、GIF 形式のファイルは使用できますが、PNG は作成できません。 gd-1.6 以降のバージョンをインストールすると、PNG ファイルは作成できますが、GIF 形式のファイルは作成できません。
簡単な画像を作成するには多くの機能を使用する必要もありますが、順を追って説明します。
この例では、PNG 形式で画像ファイルを作成します。次のコードは、作成された画像の MIME タイプを含むヘッダーです。
ImageCreate() を使用して空白の画像を表す変数を作成します。この関数にはピクセル単位の画像サイズのパラメーターが必要で、その形式は ImageCreate(x_size, y_size) です。 250の画像を作成したい場合ただし、最初に ImageColorAllocate() 関数を使用して RGB 値を使用してこの色に名前を割り当てる必要があります。この関数の形式は ImageColorAllocate([image], [red], [green], [blue]) です。空色を定義したい場合は、次のステートメントを使用できます:
$skyblue = ImageColorAllocate($newImg,136,193,255);
次に、ImageFill() 関数を使用して画像をこの色で塗りつぶす必要があります。 ImageFillRectangle()、ImageFillPolygon() など、ImageFill() 関数バージョンのいくつかの関数です。簡単にするために、次の形式で ImageFill() 関数を使用します。 ImageFill([image], [start x point], [start y point], [color]) ImageFill($newImg,0,0, $skyblue);
最後に、画像の作成後に使用されていた画像ハンドルとメモリを解放します:
ImageDestroy($newImg); このようにして、画像を作成するコード全体は次のようになります。以下のように表示:
header ("Content-type: image/png");
$newImg = ImageCreate($newImg,193,255); newImg, 0,0,$skyblue);
ImagePNG($newImg);
?> このスクリプトファイルをskyblue.phpとして保存すると、スカイブルーの 250X250 PNG 形式の画像が表示されます。
画像作成機能を使用して、大きな画像を小さな画像にするなど、画像を処理することもできます:
画像があり、そこから 35X35 の画像を切り抜きたいとします。必要なのは、35x35 の空の画像を作成し、元の画像を含む画像ストリームを作成して、サイズ変更した元の画像を新しい空の画像に配置することだけです。
このタスクを完了するための重要な関数は ImageCopyResize() で、次の形式が必要です: ImageCopyResize([新しい画像ハンドル],[元の画像ハンドル],[新しい画像 X], [新しい画像 Y], [元の画像 X ]、[元のイメージ Y]、[新しいイメージ X]、[新しいイメージ Y]、[元のイメージ X]、[元のイメージ Y])。
< /* ファイルに含まれるコンテンツ タイプをブラウザに知らせるためのヘッダーを送信します*/
header("Content-type: image/png"); /* 新しい画像の高さを作成して保存しますと幅の変数*/
$newWidth = 35;
$newHeight = 35;
/* 指定された高さと幅で新しい空白の画像を作成します*/
$newImg = ImageCreate($newWidth,$newHeight);
/* 元の大きい画像からデータを取得します*/
$origImg = ImageCreateFromPNG("test.png")
/* 画像をコピーしてサイズ変更した後、 ImageSX(), ImageSY() を使用して、元の画像の X と Y のサイズを取得します */
ImageCopyResize($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX ($origImg) ),ImageSY($origImg));
/*必要な画像を作成しメモリを解放します */
ImagePNG($newImg)
ImageDestroy($newImg);ブラウザで開くと、35X35 の PNG 形式のグラフィックが表示されます。
7. PHP ベースのユーザー認証
各スクリプトでパスワード保護を実行したい場合は、header() ステートメント、$PHP_AUTH_USER および $PHP_AUTH_PW を使用して、通常のサーバーベースの質問/応答である基本認証スキームを確立できます。シーケンスは次のとおりです:
1. ユーザーがサーバーにファイルをリクエストします。ファイルがサーバー上で保護されている場合、応答ヘッダーで 401 (許可されたユーザーを示す) 文字列がユーザーに返されます。
2. ブラウザがこの応答を受信すると、ユーザー名/パスワードの入力を求めるダイアログ ボックスが表示されます。
3. ユーザーはダイアログボックスにユーザー名とパスワードを入力し、「OK」ボタンをクリックすると、認証のためにサーバーに情報が返されます。
4. ユーザー名とパスワードが有効な場合、ユーザーがファイルを使用している限り、保護されたファイルは有効なままになります。
単純な PHP スクリプト ファイルは、ユーザー名/パスワード ダイアログ ボックスを自動的に表示させる適切な HTTP ヘッダーをユーザーに送信することで、HTTP 質問/応答システムを模倣できます。入力された情報は $PHP_AUTH_USER と $PHP_AUTH_PW に保存され、これら 2 つの変数を使用して、テキスト ファイルやデータベースなどに保存されているユーザー名/パスワードと比較できます。
この例では、認証に 2 つのハードコーディングされた値を使用していますが、ユーザー名とパスワードがどこに配置されても原理は同じです。
/* $PHP_AUTH_USER と $PHP_AUTH_PW の値を確認します*/
if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW)) { /* そうでない場合値、ダイアログ ボックスをトリガーできるヘッダーを送信します */
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized');認証が必要です。';
exit;
} else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW))){
/* 変数に値があるので、それらが正しいかどうかを確認します*/
if (($PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword")) {
/* 入力されたユーザー名とパスワードのいずれかが間違っている場合は、ダイアログボックスが表示されます。 Header */
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized'); echo '認証が必要です。';
exit;
} else if (($PHP_AUTH_USER == "validname") || ($PHP_AUTH_PW == "goodpassword")) {
/* 両方の値が正しい場合、成功メッセージを表示します */
echo "< ;P> あなたは許可されています! すべてのファイルは安全です。ほとんどのファイルを保護できる可能性がありますが、特定のディレクトリ内のすべてのファイルを保護できると考えている場合は、考え方を変える必要があります。
8. PHP と COM
冒険心があり、Windows 上で CGI、ISAPI、または Apache モジュール バージョンの PHP を実行している場合は、COM 機能にアクセスできます。さて、COM の詳細な説明は Microsoft や多くの分厚い書籍に委ねられています。COM の機能を簡単に理解するために、ここでは簡単な一般的なスクリプトを紹介します。
この PHP スクリプトは、バックエンドで Microsoft のワードプロセッサ Word を起動し、新しい文書を開いてテキストを入力し、文書を保存して Word を閉じます。
<
// 新しい COM コンポーネントを指すインデックスを作成します
$word = new COM("word.application") or die("Can't start Word!")
// 表示します現在使用されている Word のバージョン番号
echo "Loading Word, v. {$word->Version}
"
// 変更したい場合は、可視性を 0 (false) に設定します。アプリケーションを最前面で開くには 1 (true) を使用します
$word->Visible = 0;
// Word で新しいドキュメントを作成します
$word->Documents->Add();
// 新しいドキュメントにテキストを追加します
$word->Selection->TypeText("Testing 1-2-3...")
// ドキュメントを Windows の一時ディレクトリに保存します
; $word->Documents[1]->SaveAs("/Windows/temp/comtest.doc");
// COM コンポーネントとの接続を閉じます
$word->Quit();
// 画面に他の情報を表示します
echo "ファイルを確認します..."
?> イントラネット Web サイトがある場合、データは SQL Server に保存されます。これらのデータを Excel 形式にするには、PHP に必要な SQL クエリを実行させて出力をフォーマットし、COM を使用して Excel を開き、データを Excel 形式のデータに変換して、ユーザーのデスクトップに保存します。
9. PHP と Java
PHP のもう 1 つの興味深い機能は、既存の Java オブジェクトのメソッドを呼び出すことができ、PHP を Java ベースのアプリケーションに統合できることです。この機能は、職場で PHP アプリケーションを推進したい場合に非常に役立ちます。得られる結果は、「ここにあるものはすべて Java に基づいています。」です。この機能を利用するには、サーバーに PHP がインストールされている必要があります ( Java仮想マシン)。 Sun、Kaffe、IBM、または Blackdown から JDK をインストールする場合、JVM はすでにインストールされています。
PHP を設定するときは、設定ファイルに with-java セクションを追加し、php.ini ファイルの一部を変更する必要があります。php.ini ファイルの変更には、主に次の内容を追加する必要があります。 ]
java.library.path=/path/to/library
java.class.path=/classpath/
extension_dir=/path/to/extensions
extension=libphp_java.so
なお、加えられた変更 インストールの種類に応じて、Java 関数の設定方法を学ぶには、PHP インストール ディレクトリの ext/java ディレクトリにある README ファイルを読む必要があります。
以下は、新しい Java オブジェクトを作成する方法に関する PHP スクリプトの例です。このスクリプトは、いくつかの Java プロパティにアクセスしてモニターに表示します。これは COM の例と同様に興味深いものであり、インスピレーションを与えてくれるはずです。
<
$system = new Java("java.lang.System");
echo "Java バージョン = " . $system->getProperty("java.version") "
";
echo "Java Vendor = " . $system->getProperty("java.vendor") . "
";
?>
Java の知識がある場合は、この統合機能は、将来の PHP の受け入れと成長の鍵となるでしょう。
10. PHP と XML
PHP には、Expat 解析をサポートするオプションの XML 拡張機能が含まれており、PHP の XML 関連関数を使用して、有効な XML ドキュメントを処理する分析プログラムを作成できます。 Apache ソフトウェア バージョン 1.3.7 以降を使用している場合は、追加のライブラリ ファイルをインストールする必要はありません。必要なのは、PHP で with-xml を設定することだけです。