途中の PHP 初心者

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 14:32:28
オリジナル
1205 人が閲覧しました

1. PHP の概要

PHP は、習得と使用が簡単なサーバーサイド スクリプト言語です。プログラミングの知識がほとんどなくても、PHP を使用して真にインタラクティブな WEB サイトを構築できます。このチュートリアルは、言語を完全に理解することを目的としたものではなく、動的な Web サイトの開発をできるだけ早く開始できるようにすることを目的としています。 HTML (または HTML エディター) の基本的な知識とプログラミングのアイデアがあることを前提としています。

1. はじめに

PHP は、動的な Web ページを生成できるツールの 1 つです。 PHP Web ファイルは通常の HTML Web ファイルとして扱われ、編集する場合は、HTML を編集するのと同じ方法で PHP を作成できます。

PHP は、ハイパーテキスト プリプロセッサ (PHP: Hypertext Preprocessor) の略です。 PHP は完全に無料で、お金を費やす必要はなく、PHP 公式サイト (http://www.php.net) から自由にダウンロードできます。 PHP は GNU Public License (GPL) に準拠しており、これに基づいて Linux や Emacs などの多くの人気ソフトウェアが誕生しました。ソース コードに無制限にアクセスでき、必要な機能を追加することもできます。 PHP は、ほとんどの Unix プラットフォーム、GUN/Linux、および Microsoft Windows プラットフォームで実行できます。 Windows PC または Unix マシンに PHP をインストールする方法については、PHP 公式サイトを参照してください。インストールプロセスは簡単です。


あなたのマシンが 2000 年問題を解決すれば、PHP には 2000 年問題も発生しません。

1.1 歴史

3 年前、Rasmus Lerdorf はオンライン履歴書を作成するために個人ホームページ ツールを作成しました。とてもシンプルな言語です。それ以来、ますます多くの人がこの言語に注目し、その拡張についてさまざまな提案を行うようになりました。多くの人々の献身と言語自体のソースフリーの性質を通じて、この言語は機能豊富な言語に進化し、今も成長を続けています。

PHP は習得が簡単ですが、mod_perl (Web サーバーに埋め込まれた Perl モジュール) よりも遅くなります。現在、mod_perl と同じくらい高速な Zend という新しいエンジンがあり、PHP4 はこのエンジンを最大限に活用できます。 PHP4 はまだベータ版のテスト段階にあります。 Andy Gutmans と Zeev Suraki が Zend の主な著者です。詳細については、Zend サイト (http://www.zend.com) にアクセスしてください。

PHP のアプリケーションは個人の Web プロジェクトで大幅に成長しました。 1999 年 10 月の Netcraft レポートによると、PHP テクノロジを使用しているドメインは 931,122 個、IP アドレスは 321,128 個ありました。

1.2 PHP の進歩

PHP を適用すると多くの利点があります。もちろん、既知の欠点は、PHP はオープンソース プロジェクトであるため商用サポートがなく、その結果として実行速度が遅くなる (PHP4 まで) ことです。しかし、PHP のメーリング リストは非常に便利で、Yahoo! や Amazon.com などの非常に人気のあるサイトを実行していない限り、PHP の速度の違いに気づくことはありません。少なくとも私は感じませんでした!さて、PHP の利点を見てみましょう:

-学習プロセス


私は個人的には PHP の非常にシンプルな学習プロセスを好みます。 Java や Perl とは異なり、まともなプログラムを書くために 100 ページを超えるドキュメントに頭を埋める必要はありません。いくつかの基本的な構文と言語機能を理解していれば、PHP コーディングの旅を始めることができます。後でコーディング プロセス中に問題が発生した場合は、関連ドキュメントをもう一度読むことができます。

PHP の構文は C、Perl、ASP、または JSP と同じです。上記の言語のいずれかに精通している人にとって、PHP は単純すぎます。逆に、PHP について詳しく知っていれば、他のいくつかの言語を学ぶのは簡単になります。

PHP のコア言語機能をすべてマスターするには 30 分しかかかりません。あなたはすでに HTML についてよく知っているかもしれませんし、編集およびデザイン ソフトウェアを使用したり、手動で美しい WEB サイトを作成する方法さえ知っているかもしれません。 PHP コードはサイトに簡単に追加できるため、サイトを設計および保守するときに、PHP を簡単に追加してサイトをより動的にすることができます。

- データベース接続

PHP は、多くのデータベースに接続する関数を使用してコンパイルできます。 PHP と MySQL は現時点では優れた組み合わせです。データベースに間接的にアクセスする独自の周辺関数を作成することもできます。このようにして、使用するデータベースを変更するときに、そのような変更に適応するようにコーディングを簡単に変更できます。 PHPLIB は、一般的なトランザクションのニーズを提供できる最も一般的に使用される基本ライブラリのシリーズです。

- スケーラビリティ

前に述べたように、PHP は急速な発展期に入っています。プログラマーではない人が PHP に追加機能を拡張するのは難しいかもしれませんが、PHP プログラマーにとっては難しくありません。

- オブジェクト指向プログラミング

PHP はクラスとオブジェクトを提供します。 Web ベースのプログラミング作業には、オブジェクト指向プログラミングのスキルが必要です。 PHP はコンストラクター、抽出されたクラスなどをサポートします。

- スケーラビリティ

従来、Web ページの対話は CGI を通じて実現されていました。 CGI プログラムのスケーラビリティは、実行中の CGI プログラムごとに個別のプロセスを開くため、理想的ではありません。解決策は、CGI プログラムを Web サーバーに書き込むために一般的に使用される言語 (mod_perl、JSP など) のインタープリターをコンパイルすることです。 PHP はこの方法でインストールできますが、CGI をこの方法でインストールしようとする人はほとんどいません。埋め込み PHP はよりスケーラビリティが高くなります。

- さらなる機能

Web プログラミングにより適したものにするために、PHP 開発者は、使いやすいレイヤーを含む多くの周辺機器の人気のある基本ライブラリを開発しました。 PHP を使用して、Oracle、MS-Access、Mysql などのほとんどのデータベースに接続できます。ハエに絵を描いたり、電子メールをダウンロードまたは表示するプログラムを作成したりできます。ネットワーク関連の機能も実行できます。何よりも、PHP インストールに必要な機能を選択できます。 Nissan の Xterra の言葉を借りれば、PHP はやりたいことはすべて実行でき、万能です!

1.3 競合他社: ASP、mod_perl、JSP

ASP/JSP で何ができるのかは確かにわかりません。しかし、明らかなことは、そのようなコードを書くのがどれほど簡単であるか、それらを購入するとどれほど高価になるか、そしてどれほど高価で強力なハードウェアが必要になるかということです。中立的な意見(例えば、SUN や Microsoft の数百万ドルの影響を受けていないなど)があれば、ついでに教えてください。

私の知る限り、JSP は Java に基づいているため、Java プログラマーは簡単にコーディングを始めることができます。 ASP は複数の言語をサポートする機能を備えた一般的なエンジンですが、デフォルトで最も一般的に使用されているのは VBScript です。

mod_perl は Perl と同じくらい強力ですが、より高速です。

2. PHP 入門

PHP サイトのオンライン チュートリアルはすでに優れています。他のチュートリアルへのリンクもあります。記事のこの部分では、PHP について詳しく説明します。私の目的は、あなたがすぐに PHP プログラミングを始められるようにすることだけです。

2.1 最初の要件

まず、PHP をサポートする動作する Web サーバーが必要です。サーバー上のすべての PHP ファイルの拡張子は .php3 であると仮定します。
2.2 PHP のインストール
次の内容を含む test.php3 という名前のファイルを生成します:
次に、このファイルをブラウザで開きます。このページを参照して、PHP インストールで使用されるオプションを確認してください。

2.3 構文

前に述べたように、PHP コードと HTML コードを混在させることができます。したがって、この 2 つを区別する方法が必要です。以下にいくつかの方法を示します。最も使いやすいものを選択して、それを使い続けることができます。
HTML から分離します
使用できるメソッドは次のとおりです:
. .

ステートメント
PHP ではステートメントは (;) で区切られます。 HTML から分離されたこれらのタグは、ステートメントの終わりも示します。

コメント

PHP は C、C++、Unix スタイルのコメントをサポートしています:

/* C、C++ スタイルの複数行コメント*/
// C++ スタイルの単一行コメント
# Unix スタイルの単一行コメント

Hello, World!

これまでに学んだ知識を使えば、おそらくプログラミングの世界で最も有名な単語の 1 つを出力する最も簡単なプログラムを作成できます。




// 単一行の C++ スタイルのコメント
/*
メッセージの出力
*/
# Unix スタイルの単一行のコメント


2.4 データ型

PHP は、整数、浮動小数点数、文字列、配列、オブジェクトをサポートします。変数の型は通常、プログラマによって決定されるのではなく、PHP ランタイムによって決定されます (なんと安心しました!)。ただし、型は関数 Cast または settype() によって明示的に設定することもできます。

数値

数値型は整数または浮動小数点数です。次のステートメントを使用して値を割り当てることができます:
$a = 1234; # 10 進数
$a = -123; # 8 進数 (10 進数の 83 に等しい)
$a = 0x12; # 16 進数 (18 進数に等しい)
$a = 1.234; # 浮動小数点数 "倍精度数値"
$a = 1.2e3; # 倍精度数値の指数形式
String

文字列は、一重引用符または二重引用符で囲まれたフィールドによって定義できます。違いは、一重引用符で囲まれた文字列はリテラルに定義されるのに対し、二重引用符で囲まれた文字列は展開できることです。バックスラッシュ () を使用して、特定の特殊文字を区切ることができます。例:
$first = 'Hello';
$next = "World";
$full1 = "$first $second"; # Hello World を生成する
$full2 = '$first $second'; 2 つ目

は算術記号を使用して文字と数字を接続できます。文字は、元の位置を使用して数値に変換されます。詳細な例は PHP マニュアルにあります。

配列とハッシュ テーブル

配列とハッシュ テーブルは同じ方法でサポートされます。それらをどのように使用するかは、それらをどのように定義するかによって異なります。 list() または array() を使用してそれらを定義することも、配列に値を直接割り当てることもできます。配列のインデックスは 0 から始まります。ここでは説明していませんが、多次元配列は簡単に使用できます。

// 2 つの要素を含む配列
$a[0] = "first";
$a[] = "third"; // 配列要素を追加する簡単な方法
// $a[2] には値「3 番目」が割り当てられます
echo count($a); // 配列には 3 つの要素があるため、3 を出力します
// 1 つのステートメントで配列を定義し、値を割り当てます
; $myphonebook = array (
"sbabu" => "5348",
"keith" => "4829",
"carole" => "4533"
); ああ、学部長のことは忘れてください 、要素を追加しましょう
$myphonebook["dean"] = "5397";
// 定義した carale 要素が間違っています、修正しましょう
$myphonebook["carole"] => "4522"
/ / Haven'配列に対して同様のサポートを使用する方法を説明しましたか?見てみましょう
echo "$myphonebook[0]"; // sbabu
echo "$myphonebook[1]" // 5348

配列またはハッシュ テーブル用の他の便利な関数には、sort()、next ()、 prev() と each() です。

Object

new ステートメントを使用してオブジェクトを生成します:
class foo
{
function do_foo ()
{
echo "Doing foo."
}
}
$bar = new foo; do_foo ();

変数の型を変更する

PHP マニュアルには次のように記載されています。「PHP では、変数の宣言時に変数の型を直接定義することはサポートされていません (また、必要ありません)。変数の型は状況に基づいて決定されます」変数を指定すると、 var に文字列が代入され、整数値が代入されると、それは整数になります。 (ASCII 48)
$foo++; // $foo は文字列 "1" (ASCII 49)
$foo += 1; // $foo は整数 (2) になります。 1.3; // $foo は倍精度 (3.3)
$foo = 5 + "10 匹の子豚" // $foo は整数 (15)
$foo = 5 + "10 匹の子豚";は整数(15)です

変数の型を強制的に変換したい場合は、C言語と同じ関数settype()を使用できます。

2.5 変数と定数

変数の前にドル記号 ($) が付いていることに気づいたかもしれません。すべての変数はローカル変数です。定義された関数で外部変数を使用するには、global ステートメントを使用します。また、変数のスコープを関数に制限したい場合は、static ステートメントを使用します。
$g_var = 1; // グローバル スコープ
function test()
{
global $g_var; // これにより、グローバル変数を宣言できます
}

より高度な変数の変数表現です。 PHPのマニュアルを参照してください。これは時々役立つことがあります。

PHP には多くの組み込み定義変数があります。また、define 関数を使用して独自の定数を定義することもできます (define("CONSTANT", "value") など)。

2.6 演算子

PHP には、C、C++、Java でよく見られる演算子があります。これらの演算子の優先順位も一貫しています。代入には「=」も使用します。

算術と文字

文字に関連する演算子は次の演算子の 1 つだけです:
$a + $b: 加算
$a - $b: 減算
$a * $b: 乗算
$a / $b: 除算
$a % $b: 剰余 (剰余)
$a . $b: 文字列の連結

論理和の比較

論理演算子は:
$a || または
$a または $b: または
$ a && $b:
$a と $b :
$a と同じ xor $b: XOR ($a または $b が true の場合は true、両方が同じ場合は false)
$a : Non! -
比較演算子には以下が含まれます:
$a == $b :
$a と等しい != $b :
$a と等しくない < $b :
$a より小さい <= $b : 以下to
$a > $b:
$a >= $b:
以上 C と同様に、PHP にも三重演算子 (?:) があります。 PHP にもビット演算子が存在します。

優先順位

C や Java と同じです!

2.7 制御プロセス構造

PHP には C と同じプロセス制御があります。以下に簡単に紹介します。

if、elseif、if(): endif

if (式 1)
}
elseif (式 2) . 。
}
//
if (式 1) .
.
その間、ループします。 do..while、for

{
}
{
}
for (式 1; 式 2; 式 3)
. .
}
//または Python
while (expr) .

switch

switch の最良の代替物: i)
{
case 0:
print "i = 0";
case 1:
print "i = 2" ;

break、続行

break電流ループ制御構造を破壊します。
continue は、残りの現在のループから抜け出し、次のループの実行を継続するために使用されます。

require、include

C の #include 前処理と同じです。 require で指定したファイルは、メイン ファイル内のその場所を置き換えます。ファイルを条件付きで参照する場合は、include() を使用できます。これにより、複雑な PHP ファイルを複数のファイルに分割し、必要に応じて個別に参照できるようになります。

2.8 関数

次の例のように独自の関数を定義できます。関数の戻り値は任意のデータ型になります。
function foo (変数名 1、変数名 2、...、変数名 n)
{
echo "Example function.n";
return $retval;
すべての PHP コードは、他の関数やクラスの定義も含め、関数定義に含めることができます。関数は参照される前に定義する必要があります。

2.9 クラス

クラスモデルを使用してクラスを作成します。クラスの詳細な説明は PHP マニュアルを参照してください。
class Employee
{
var $empno; // 従業員数

function add_employee($in_num, $in_name)
{
$this->empno = $in_num; this ->empnm = $in_name;

function show()
{
echo "$this->empno, $this->empnm"
}

function changenm($in_name);
{
$this->empnm = $in_name;
}
}
$sbabu = 新しい従業員;
$sbabu->changem("babu " );

$sbabu->show();

3. 例から始めます

PHP の多くの機能は、他のソフトウェアまたはツールに関連しています。これまでに学んだ PHP の知識を使用して、単純なインタラクティブな Web サイトの構築を試みることができます。このプロセスを通じて私たちは多くのことを学ぶことができます。それでは、典型的な個人 Web サイトの構築に焦点を当てましょう。

3.1 サイトを計画する
一般に、個人サイトには、ウェルカム ページ、ゲストブック ページ、ブックマーク リンク ページ、カウンター、連絡先情報、さらには写真コレクションやいくつかの音楽ファイルなどが含まれます。タイトルページ、連絡先情報ページ、履歴書ページから始めましょう。標準のユニバーサル ページ ヘッダーとフッターも必要です。

タイトルページ--front.html


ここには非常に単純な HTML ファイルがあります:

</HEAD> <br><H1> <br></H2> <br><H2> GT;ここにはまだ何もありませんが、私の質素な住居へようこそ。 <br></P> <br><P> <br>でも、すぐにもっと増えることを願っています。 <br></P> <br><SMALL> <br></I> <br><br><H1> <br>連絡先<br><HR> <br></P> <P ALIGN= "CENTER"> <I> <br></I> <br></BODY> ;/HTML> <br> <br> <br>3.2 HTML から PHP へ <br> <br> 上からわかるように、すべてのページに同じヘッダーとフッターがあります。作業負荷が軽い場合は、上記のように各ページに同じ情報を書き込むのは問題ありませんが、100 ページを超えるページがあり、すべてのページのヘッダーまたは下部を変更する必要がある場合、どれだけの労力を費やさなければならないかを想像してみてください。ページごとに手動で変更するのは、何と退屈で退屈な作業でしょう。したがって、これらのページの PHP ヘッダー ファイルと下部ファイルを作成し、すべての HTML ページでそれらを参照するだけで済みます。これらのインクルード ファイルは、include というサブディレクトリに配置します。以下では、これらのサイトに共通するコンテンツをファイルに書き込みます。 <br> <br>サイト全体の変数設定: common.inc <br><? <br />//サイト全体の変数 <br />$MyEmail = "phptalk@tnc.org"; <br />$MyEmailLink = "<a href="mailto:$MyEmail " >$MyEmail</a>"; <br>$MyName = "PHP Talk"; <br>$MySiteName = $MyName." のホームページ"; <br>?> <br> <br>一般的なページ ヘッダー: header.inc <br>< ;? <br>// 一般的なページヘッダーを定義します <br><HTML> <br></p> <title>


<> ; /H2>


ユニバーサル ページ下部

SMALL>
.inc");
?>


私のささやかな住居へようこそ、ここにはまだ何もありませんが。



でも、すぐにもっと増えることを願っています。


include("include/common.inc");

新しい cont.php3:
?> 1-800-PHP-INFO までご連絡ください
< ;?
include("include/footer.inc");

これで、この配置の利点が推測できます。ページのヘッダーまたは下部を変更したい場合は、対応するファイルを変更するだけで済みます。電子メール アドレスや名前を変更したい場合は、common.inc ファイルを変更するだけです。任意のファイル名またはファイル拡張子のファイルをファイルに含めることができ、他のサイトのファイルを含めることもできることにも注目してください。

3.3 カウンター

ホームページにカウンターを追加しましょう。この例は何度も説明されていますが、ファイルの読み取りと書き込み、および独自の関数の作成方法を示すのに依然として役立ちます。 counter.inc には次のコードが含まれています:
/*
|| 単純なカウンター
*/
function get_hitcount($counter_file)
{
/* カウンターがゼロに戻っていない場合は、このようにします。使用されている場合、初期値は 1 になります
もちろん、人々を騙すために初期値を 20000 に設定することもできます
*/
$count=0;
// カウンターを保存するファイルが既に存在する場合は、その内容を読み取ります
if ( file_exists($counter_file ) )
{
$fp=fopen($counter_file,"r");// 上位 20 件だけを取り上げました。あなたのサイトがあまり人気にならないことを願っています
$count=0+fgets($fp,20)
// 関数 fgets() は文字列を返すため、メソッドを 0 個追加できます。自動的に整数に変換します
fclose($fp);
// ファイル操作が完了しました
}
// カウント値を 1 回増加します
$count++;
// 新しいカウント値をファイルに書き込みます
$fp= fopen($counter_file) ,"w");
fputs($fp,$count);
# カウント値を返します
}
?>このカウンターを表示するファイル:
include("include/counter.inc");
// ファイル counter.txt にカウンター値を入れ、それを読み出して出力します
printf ("%06d
n",
get_hitcount("counter.txt"));
include("include/footer.inc");
?>
新しい Front.php3 をチェックしてください

3.4 フィードバック フォーム

視聴者が記入して電子メールで送信できるように、別のフィードバック フォームを追加しましょう。たとえば、非常に単純なメソッドを使用して実装します。1 つはビューアに入力フォームを提供するページ、もう 1 つはフォーム データを取得して処理し、メールで送信するページです。

PHP でフォームデータを取得するのは非常に簡単です。フォームが送信されると、フォームに含まれる各要素に対応する値が割り当てられ、一般変数への参照のように使用できます。

;

process_form.php3 では、変数 $mytext に入力された値が割り当てられます - 非常に簡単です。同様に、リスト ボックス、複数選択ボックス、ラジオ ボックス、ボタンなどのフォーム要素から変数値を取得できます。必要なのは、後で参照できるように、フォーム内の各要素に名前を付けることだけです。

この方法によれば、名前、メールアドレス、メッセージの 3 つの要素を含む単純なフォームを生成できます。訪問者がフォームを送信すると、フォームを処理する PHP ページ (sendfdbk.php3) がデータを読み取り、名前が空かどうかを確認し、最後にデータを電子メールで送信します。

フォーム: form.php3
$title = "フィードバック";
< P>




"include/common.inc");
?> ");
$title = "フィードバック";
include("include/header.inc");
if ( $name == "" )
/ / 今では匿名コメントは嫌いです!
echo "え?どうしてあなたは匿名なんですか?";
}
elseif ($name == "あなたの名前")
{
// この視聴者は本当に名前を明かされたくないのです!
echo "こんにちは ? あなたの名前
実際の名前に置き換えられるはずです!";
}
else
{
// 丁寧なありがとうを出力します
echo "
こんにちは、$name


フィードバックありがとうございます
// 最後にメールを送信してください
mail($MyEmail, "Feedback.","
名前 : $name
電子メール : $email
Comment : $comment
");
}
include("include/footer.inc ");
?>

3.5 シンプルなオンサイト検索エンジン

PHP は外部プログラムを呼び出すことができます。 Unix 環境では、プログラム grep を使用して単純な検索エンジンを実装できます。もう少し複雑にすることもできます。ページを使用して、ユーザーが検索文字列を入力してクエリ結果を出力するためのフォームを出力します。
$title = "検索"
?

"" METHOD="POST">
"
SIZE="20" MAXLENGTH="30">



if ( ! empty($searchstr) )
{
// empty() はクエリ文字列が空かどうかを確認するために使用されます
// 空でない場合は grep クエリ
echo "
n" を呼び出します
// grep を呼び出し、大文字と小文字を区別しないモードですべてのファイルをクエリします
$cmdstr = "grep -i $searchstr *";
$fp = Popen( $cmdstr, "r" ) // コマンドを実行し、パイプを出力します
$myresult = array (); // クエリ結果を保存します
while( $buffer = fgetss ($fp, 4096))
{
// grep は次の形式を返します: ファイル名: 一致する文字列の行数
// したがって、関数split( ) データを分離して処理します
list($fname, $fline) = split(":",$buffer, 2);
// 最初に一致した結果のみを出力します
if ( !define($ myresult[$fname] ))
$myresult[$fname] = $fline;
}
// 結果を配列に保存し、処理して出力できます
if ( count($myresult) )
{
echo "< OL>n";
while(list($fname,$fline) = each($myresult))
echo "

  • $fname : $ fline
  • n";
    echo "n";
    }
    else
    {
    // クエリ結果がない場合
    echo "申し訳ありませんが、 $searchstr
    include("include/footer.inc");
    ? >


    注:

    PHP_SELF は PHP の組み込み変数です。現在のファイル名が含まれます。
    fgets() は、最大 4096 (指定された) 文字長までファイルを 1 行ずつ読み取ります。
    fgetss() は、出力 HTML タグを解析する点を除いて、fgets() に似ています。
    split() のパラメータは 2 です。これは、出力を 2 つの部分に分割するだけでよいためです。 「:」も省略する必要があります。
    each() は配列操作関数であり、配列全体をより簡単に走査するために使用されます。
    popen()、pclose() は、パイプライン処理が追加されていることを除いて、fopen()、fclose() と非常によく似た機能を持っています。
    上記のコードは検索エンジンを実装するための良い方法ではないことに注意してください。これは、PHP をより良く学習するための単なる例です。理想的には、キーワードを含むデータベースを構築してから検索する必要があります

    4. データベースへのリンク

    PHP を使用すると、データベースに簡単に接続し、データを要求して Web サイトに表示したり、データベース内のデータを変更したりすることができます。 MySQL は非常に人気のあるデータベースであり、インターネット上には PHP と MySQL に関するチュートリアルが多数あります。 MySQL は無料なので、多くの人を魅了するかもしれません。 MySQL は幅広い用途に使用できるため、ここでは MySQL の使用法について詳しく説明しません。 Oracle はエンタープライズ アプリケーションで広く使用されているため、Oracle を使用して PHP とデータベースの接続を紹介します。 Oracle データベースの設計原則については、議論の範囲を超えているため、言及しません。
    PHP は、Oracle に接続するための 2 つの関数セット、つまり ORA_ 関数と OCI 関数を提供します。 ORA_ 関数は少し古いです。 OCI機能のアップデートにより改善されたとのこと。 2 つの使用構文はほぼ同じです。前に述べたように、PHP インストール オプションは両方の使用をサポートする必要があります。
    Microsoft Windows プラットフォームへの PHP3 対応 Apache サーバーのインストールに関する詳細および Oracle データベースに関する詳細については、次の URL を参照してください: www.csoft.net/~vsbabu/articles/oraphp.html。

    4.1 接続

    if ($conn=Ora_Logon("user@TNSNAME","password"))
    {
    echo "SUCCESS ! データベースn";
    else
    {
    echo "Failed :-( データベースnに接続できませんでした";
    }
    Ora_Logoff($conn);
    phpinfo();
    ?>
    上記のコードはTNSNAMEを使用しています( tnsnames.ora ファイルで指定された Oracle データベース名、ユーザー名、およびパスワードを使用してデータベースに接続します。接続に成功すると、ora_logon 関数はゼロ以外の接続 ID を返し、それを変数 $conn に保存します。

    4.2.お問い合わせ

    データベースへの接続の準備ができたと仮定して、実際にデータベースにクエリを適用してみましょう。次のコードは、接続とクエリの典型的な例を示しています:
    /*
    * データベースに接続してクエリを実行します
    */
    function printoraerr($in_cur)
    {
    // Oracle にエラーがあるかどうかを確認します
    // If エラーがある場合、それが表示されます
    // ポインタがアクティブ化されると、Oracle への各リクエストの後にこの関数が呼び出されます
    if(ora_errorcode($in_cur))
    echo "Oracle code - ".ora_error ($in_cur)."n";
    return;
    /**メインプログラム*/
    if (!($conn=ora_logon("user@TNSNAME","password")))
    {
    echo "データベースへの接続に失敗しましたn";
    終了;
    }
    echo "接続として接続しました - $conngt;
    n";
    echo "カーソルを開いています...
    n";
    $cursor=ora_open($conn); printoraerr( $cursor);
    echo "開いたカーソル - $cursor
    n"; ";
    echo "クエリを解析しています $qry ...
    n";
    ora_parse($cursor,$qry,0); printoraerr($cursor);
    echo "クエリparsed
    n";
    echo "カーソルを実行しています...
    n";
    ora_exec($cursor); printoraerr($cursor);
    echo "カーソル
    nを実行しました";
    echo "カーソルをフェッチしています ...
    n";
    while(ora_fetch($cursor))
    {
    $user=ora_getcolumn($cursor,0); printoraerr($cursor);
    $sysdate=ora_getcolumn($cursor, 1); printoraerr($cursor);
    echo " row = $user, $sysdate
    n";
    }
    echo "すべてのレコードを取得しました"; echo "カーソルを閉じています...
    n ";
    ora_close($cursor);
    echo "カーソルを閉じています
    n"; ora_logoff($conn);
    echo "Oracle
    n からログオフしました"
    ?> (翻訳者注: 上記のコード部分にはコメントがありません。PHP マニュアルの Oracle データベース関数のセクションを参照してください)
    4.3 結果を表示する

    次のコードは、データベースにクエリを実行して結果を出力する方法を示しています:
    function printoraerr($in_cur, $conn)
    {
    // Oracle がエラーを起こしたかどうかを確認します
    // Ifエラーがあるので表示します
    // ポインタがアクティブ化されている場合、Oracle 関数へのリクエストのたびにこれを呼び出します
    // エラーが発生した場合は、すぐに終了します
    if(ora_errorcode($in_cur))
    {
    echo " Oracle コード - ".ora_error($in_cur)."
    n";
    ora_logoff($ conn);
    exit;
    }
    return;
    }

    function exequery($w_qry,$conn)
    {
    $cursor=ora_open($conn);
    ora_parse($cursor,$conn); ,$conn);
    $numcols=ora_numcols($cursor);
    / / ヘッダーを表示

    n";
    for ($i=0; $i<$w_numcols;$i++)
    {
    $align=(ora_columntype($cursor,$i)=="NUMBER ")?"RIGHT":"LEFT";
    echo "tn";
    }
    echo " n";
    while(ora_fetch($cursor))
    {
    echo " n";
    for ($i=0;$i<$w_numcols;$i++)
    {
    $ align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT": "LEFT"
    if(ora_columntype($cursor,$i)=="LONG")
    echo "n";
    else
    echo "n" ;
    printoraerr($cursor,$conn);
    }
    $numrows++;
    echo "n";
    }
    if ($numrows==0)
    echo "n";
    else
    {
    echo "n";
    echo "n"
    echo "n";
    echo "n";
    echo "
    ".ora_columnname($cursor,$i)."
    ". <br>ora_getcolumn($cursor,$i) ."
    ".ora_getcolumn($cursor,$i)."
    クエリはレコードを返しませんでした
    Count$numrows
    n"
    }

    // メインプログラム
    if(!($conn= ora_logon("user@SID","password")))
    {
    echo "エラー: データベースに接続できません"
    終了;
    $qry="SELECT
    deptno "Dept"
    ,empno "Emp"
    ,empnm "名前"
    ,salary "給与"
    FROM
    employee
    ORDER BY 1,2";
    exequery($qry);
    ora_logoff($conn);
    ?>
    (翻訳者注: 上記のコード スニペット)コメントが不足している場合は、PHP マニュアルの Oracle データベース機能セクションを参照してください)

    4.4 HTTP に基づく Oracle ログイン

    Oracle ログインを確認するために、PHP ページのコードの前に次のコードを追加します。 $SID を正しく設定する必要があることに注意してください。
    if(!isset($PHP_AUTH_USER))
    {
    Header("WWW-authenticate: Basic realm="$SID"");
    $title= "ログイン手順";
    echo "

    n"
    終了
    }
    else
    {
    if (!($conn=ora_logon(") $PHP_AUTH_USER@$SID",$PHP_AUTH_PW)))
    {
    Header("WWW-authenticate: Basic realm="$SID"");
    Header("HTTP/1.0 401 Unauthorized");
    $title="ログイン手順";
    echo "

    サイトに入る権限がありません
    n";
    exit;
    }
    }
    ?>

    5. その他の機能

    5.1 画像の生成

    PHP は画像を操作できます。 GD ライブラリがインストールされている場合は、PHP を使用してイメージを生成することもできます。
    Header("Content-type: image/gif");
    $string=implode($argv," ");
    $im = imagecreatefromgif("images/button1.gif"); ImageColorAllocate($im, 220, 210, 60);
    $px = (imagesx($im)-7.5*strlen($string))/2;
    ImageString($im,3,$px,9,$string,
    他のページでは、次のタグ 途中の PHP 初心者 を通じて呼び出され、上記の button.php3 コードがテキスト値を取得し、その値を別途取得した画像ファイルに追加します。上記のコード内の画像ファイルは、images/button1.gif です。最終的にブラウザに出力されます。フォーム フィールドで画像ボタンを使用したいが、ボタン上のテキストが変更されるたびに新しい画像を再生成する必要がない場合は、この簡単な方法を使用して画像ファイルを動的に生成できます。

    5.2 Cookie

    PHP は HTTP ベースの Cookie をサポートします。必要に応じて、通常の変数と同じように簡単に Cookie を使用できます。 Cookie はブラウザがクライアントに保存する情報であり、特定の PC 上の誰かがサイトを訪問したかどうか、訪問者のサイト上での軌跡などを知ることができます。 Cookie の使用の典型的な例は、ブラウザの設定のスクリーニングです。 Cookie は関数 setcookie() によって設定されます。 HTTP ヘッダーを出力する関数 header() と同様に、実際のコンテンツがブラウザーに出力される前に setcookie() を呼び出す必要があります。以下は簡単な例です:
    if (empty($VisitedBefore))
    {
    // Cookie が設定されていない場合は、現在の時刻値を Cookie に割り当てます
    // 関数の最後のパラメータは次のように宣言しますCookie 保存された時間
    // この例では 1 年です
    // time() 関数は、1970 年 1 月 1 日からの時間を秒単位で返します
    SetCookie("VisitedBefore", time(), time() +(60 *60*24*365));
    }
    else
    {
    // 訪問者様、また来てください
    echo "こんにちは、おかえりなさい
    // クッキーを読んで判断してください
    if ( (time(; ) - $VisitedBefore) >= "(60*60*24*7)" )
    echo "なぜ戻ってくるのに 1 週​​間もかかったのですか。もっと頻繁に来るべきです
    }
    ?
    5.3 HTTP検証に基づく

    PHP が CGI モードで実行されている場合、HTTP ベースの認証はできません。関数 header() を使用して HTTP ヘッダーを送信して認証を強制すると、クライアント ブラウザーにユーザー名とパスワードを入力するためのダイアログ ボックスが表示されます。これら 2 つの変数は $PHP_AUTH_USER と $PHP_AUTH_PW に保存されており、これらの 2 つの変数を使用して正当性を検証し、エントリを許可できます。次の例では、ユーザー名とパスワードのペアを使用して tnc/nature へのユーザーのログインを認証します。
    if(!isset($PHP_AUTH_USER))
    {
    Header("WWW-Authenticate: Basic realm="My Realm"") );
    Header("HTTP/1.0 401 Unauthorized");
    echo "ユーザーがキャンセルボタンを押した場合に送信するテキスト"
    }
    else
    if ( !($PHP_AUTH_USER=="tnc " && $ PHP_AUTH_PW=="nature") )
    {
    // ユーザー名とパスワードの組み合わせが間違っている場合は、再認証を強制します
    Header("WWW-Authenticate: Basic realm="My Realm"")
    Header( "HTTP /1.0 401 Unauthorized");
    echo "エラー: $PHP_AUTH_USER/$PHP_AUTH_PW が無効です。";
    exit;
    }
    else
    {
    echo "ようこそ tnc!";
    }
    ?>
    実際 実際参照すると、上記のコード スニペットでは明らかなユーザー名とパスワードのペアは使用されない可能性が高く、代わりにデータベースまたは暗号化されたパスワード ファイルを使用してアクセスします。

    5.4 ファイルのアップロード

    ファイル機能を実装するには、PHP を使用できます。クライアントのブラウザは Netscape3 以降または IE3 以降である必要があることに注意してください。以下はこの関数の簡単なデモです:

    ファイルをアップロードします</HEAD> <br><FORM ACTION="receiver.php3" <br />ENCTYPE="multipart/form-data" METHOD=POST> <br><INPUT TYPE="HIDDEN" <br />NAME="MAX_FILE_SIZE" VALUE="2000000"> INPUT TYPE ="FILE" <br>NAME="uploadfile" SIZE="24" MAXLENGTH="80"> <br><INPUT TYPE="SUBMIT" VALUE="ファイルをアップロードします!" NAME= "送信"> <br><INPUT TYPE="SUBMIT" VALUE="キャンセル" <br><BR> <br><I><FONT SIZE=" 2" >(ファイルのアップロード中にわずかな <br> 遅延が発生する場合があります。)</FONT></I> <br></BODY> <br></HTML> <br> <br>以下はアップロードされたファイルの処理ですファイル: <br>(receiver.php3 ): <br><? <br>function do_upload () <br>{ <br>global $local_file, $error_msg; <br>if ( $uploadfile == "none" ) $error_msg = "アップロードするファイルが指定されていません。"; <br>return; <br>if ( $uploadfile_size > 2000000 ) <br>$error_msg = "申し訳ありませんが、ファイルが大きすぎます。"; } <br>$the_time = time (); <br>// 次のディレクトリに対する書き込み権限が必要です <br>$upload_dir = "/local/uploads"; <br>$local_file = "$upload_dir/$the_time"; '$local_file' ) ) <br>{ <br>$seq = 1; <br>while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++ } <br>$local_file = "$upload_dir/$the_time$seq"; }; <br>rename ($ Uploadfile, $local_file ); <br>display_page () <br>{ <br>// これがページのコンテンツです <br><HEAD> ;php3 受信スクリプト
    if ($error_msg


    "; }
    if ($ Sendit) {
    do_upload ();
    }
    Lseif ($ Cancelit) {
    Header ("LOCATION: $ SOME_OTHER_SCRIPT"); nc ();
    }
    ? >


    5.5 よく使用される関数
    いくつかのよく使用される関数を簡単に見てみましょう。

    Array


    array - 配列を生成します
    count - 配列要素の数
    sort - 配列のソート、他にもいくつかのソート関数が利用可能です
    list - 配列要素をリストします
    each - 次のキーと値のペアを返します
    current - 現在の配列要素を返します
    next,prev - 現在の配列要素の前後のポインタを返します



    日付と時刻

    checkdate - 日付/時刻の形式を確認します
    date - 日付/時刻の形式を生成します
    time - 現在の時刻情報
    strftime - 日付/時刻の形式を設定します

    ディレクトリ、ファイルシステム

    chdir - ディレクトリを変更します
    dir - ディレクトリカテゴリ
    opendir、readdir、closedir - ディレクトリのオープン、読み取り、クローズ
    fopen、fclose - ファイルのオープンとクローズ
    fgets、fgetss - コンテンツを 1 行ずつ読み取ります
    file - ファイル全体を配列変数に読み取ります

    正規表現 数式

    ereg - 正規表現と一致します
    eregi - 大文字と小文字を区別しない方法で正規表現と一致します
    ereg_replace - 正規表現と一致し、置換します
    eregi_replace - 大文字と小文字を区別しない方法で正規表現と一致します、そして置換します
    split - ルールに従って文字を分割します 連結は次の場所に保存されます配列形式



    Strings

    AddSlashes - スラッシュを追加した後に文字列を使用します
    echo - 1 つ以上の文字列を出力します
    join、implode - 配列要素を文字列に結合します
    htmlentities、htmlspecialchars - HTML 特殊文字を HTML マークアップ形式に変換します
    split - ルールに従って文字列を分割し、配列形式で保存します
    5.6 サンプル ホームページを拡張します

    上記の関数とアイデアのいくつかを使用して、サンプル ホームページにさらに動的なコンテンツを追加します。各ページの上部にナビゲーション バーを追加し、同時に現在のページがリンクによって自動的に表示されないようにすることができます。また、音楽、画像、その他のファイルをアップロードしてページを自動的に更新するためのユーザー確認フォームを追加することもできます。

    ナビゲーション バー

    実際には、footer.inc ファイルにコードを追加するだけです。 Web サイト内のサフィックス .php3 を持つすべてのファイルがナビゲーション バーに表示されると仮定します。次のコードは include/navbar.inc として保存されます:
    /* 現在のページを除くすべてのファイルをナビゲーション バーに出力します。サイト上の .php3 ファイル*/
    # ディレクトリを読み取ります
    $d = dir("./");
    echo "

    | n"; >read())
    {
    // ファイルがない場合は無視します
    if ( !is_file($entry) )
    continue;
    /* ファイル名と拡張子を分けます。 . は正規表現の特殊文字であるため、引用符で囲む必要があります */
    list($filenm, $fileext) = split(".",$entry, 2);
    // .php3 以外のファイルを無視します
    if( $fileext != "php3" )
    Continue;
    /* すべての .php3 ファイルを選択したので、ファイル内の最初の行 (タイトル) を検索しましょう
    $title="something" と同様に
    を分離します。上記のタイトルの内容、リンクテキストとして使用*/
    $fp=fopen($entry,"r");
    while($buffer=fgets($fp, 4096); buffer = trim( $buffer);
    // 検索しやすいようにファイルの最初の行に各ファイルのタイトルを入れています
    // ただし、変数名を変更すると * 問題が発生する可能性があります
    if (ereg(" title *= * "", $buffer))
    {
    /* タイトルのコンテンツを取得したので、
    スペースを削除したり、それに基づいてその他の処理を行うことができます
    $title = "何とか何とか" などの PHP コードで処理する必要があります*/
    eval($buffer);
    // 次に、リンク テキストをタイトル テキストとして表示します
    }
    }
    fclose($fp); $PHP_SELF) )
    echo "$linknm";
    else
    echo "
    $linknm"; ();
    echo "

    n";
    ?>

    写真コレクション
    画像ファイルが配置されるディレクトリを維持するための HTTP ベースの認証、ファイル システム関数、およびファイル アップロード関数を参照します。
    同時に、このディレクトリ内のすべての写真をリストできるページを作成する必要があります

    include("include/common.inc");ここでユーザー認証を行います
    if(!isset($ PHP_AUTH_USER))
    {
    Header("WWW-Authenticate: Basic realm="$MySiteName"");
    Header("HTTP/1.0 401 Unauthorized");ファイルをアップロードする権限がありませんn";
    exit;
    }
    else
    {
    if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$MyPassword ) ) )
    {
    // 間違ったユーザー名である場合/パスワードのペア、再認証を強制します
    Header(" WWW-Authenticate: Basic realm="My Realm"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "エラー: $PHP_AUTH_USER/$PHP_AUTH_PW が無効です。

    ";
    exit;
    }
    }
    if ( $cancelit )
    {
    // 訪問者が「キャンセル」ボタンを押すと、ホームページ
    header ( "Location:front_2.php3") にリダイレクトされます。 );出口;
    }
    function do_upload () {
    グローバル $userfile, $userfile_size, $userfile_name, $userfile_type;
    グローバル $local_file、$error_msg;
    グローバル $HTTP_REFERER;
    if ( $userfile == "none" ) {
    $error_msg = "アップロードするファイルが指定されていません。";
    戻る;
    }
    if ( $userfile_size > 2000000 )
    {
    $error_msg = "申し訳ありませんが、ファイルが大きすぎます。";
    戻る;
    }
    // 以下の書き込み権限がある場所ならどこでも...
    $upload_dir = "写真";
    $local_file = "$upload_dir/$userfile_name";
    if ( file_exists ( $local_file ) ) {
    $error_msg = "申し訳ありませんが、その名前のファイルは既に存在します";
    戻る;
    };
    // ここからファイルの名前/種類を確認して、どのようなファイルであるかを特定できます:gif、jpg、mp3…
    rename($userfile, $local_file);
    echo "ファイルはアップロードされました
    n";
    echo "戻る
    n";
    }
    $title = "ファイルをアップロード";
    include("include/header.inc");
    if (empty($userfile) || $userfile=="none")
    {
    // 以下表单
    ?>

    " ENCTYPE="マルチパート/フォームデータ" METHOD=POST>









    (ファイルのアップロード中に若干の遅れが生じる場合があります。)

    } else {
    if ( $error_msg ) { echo "$error_msg

    ";
    if ( $sendit ) {
    do_upload ();
    }
    }
    include("include/footer.inc");
    ?>

    写真写真



    include("include/common.inc");
    $title = "ギャラリー";
    include("include/header.inc");
    ?>


    ここに私たちの家族の写真があります。この PHP スクリプトは、複数のページに分割することで、さらに改善できます



    $d = dir("写真");
    while($entry = $d->read())
    {
    if (is_file("photos/$entry"))
    echo "n";
    }
    $d->close();
    ?>

    include("include/footer.inc");
    ?> さらに、入力要素は、ファイル上で転送される表に追加され、その後、上の写真画像の段階コードで読み出されて表示される。

    6.1 ステーション ポイント

    PHP の爆発的なストリームは、Web 上の多リソースを介してより多くの PHP3 を通過できます。间出现了很多PHP ベースのステーション ポイントには、オンライン教則、コード例、テクニック、ヒントなどのコンテンツが含まれています。 www.phpx.com - 中国PHP联盟
    http://www.phpsite.net - PHP专门站
    http://www.phpchina.com - PHP CHINA
    http://www.cpcw.com/netschool/homepage /cgi/ - 電脑报网页陶吧
    国外
    http://www.php.net/ - PHP官方站点
    http://www.devshed.com/ - 极好的教程
    http://px.sklar .com - 代网交换
    http://www.phpbuilder.com/ - 教程、专栏和邮件列表档案
    http://www.weberdev.com/ - 文章和代
    http://www.phpwizard.net/ - 与技巧の提案
    http://www.iometrics.com/php/phplist.php3/ - IOMetrics スクリプトの案
    http://www.e-gineer.com/phpkb/ - PHP 知识库

    6.2 邮件リスト表

    PHP オフィシャル ステーション ポイントの「サポート」リストに登録して、以下のリストを取得できます。これらはすべて高流量ストリーム テーブルであり、通常は毎日 100 通の電子メールが送信されることに注意してください。 php.net - 主要な列表
    php-dev@lists.php.net - 主要针对开発行者
    php-list@exp.com.cn - このサイトのメーリング リストはフォーラムに接続されています

    6.3 目を引くプロジェクト

    PHP に基づくいくつかのプロジェクトは比較的順調に開発されています。より優れた、より目を引くもののいくつかは次のとおりです:

    http://phplib.netuse.de - PHPLib、PHP 関数ライブラリの完全なセット
    http://www.phorum.org - Phorum は非常に完全な BBSシステム
    http://www.fishcartsql.org - FishCartSQL は電子商取引ソリューションです
    http://www.midgard-project.org - Midgard は Web アプリケーション開発プラットフォームです


    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート