3 PHP の練習
PHP の多くの機能は他のソフトウェアやツールに関連しています。これまでに学んだ PHP の知識を使用して、単純なインタラクティブな Web サイトの構築を試みることができます。このプロセスを通じて私たちは多くのことを学ぶことができます。それでは、典型的な個人 Web サイトの構築に焦点を当てましょう。
3.1 サイトを計画する
一般に、個人サイトには、ウェルカム ページ、ゲストブック ページ、ブックマーク リンク ページ、カウンター、連絡先情報、さらには写真コレクションやいくつかの音楽ファイルなどが含まれます。タイトルページ、連絡先情報ページ、履歴書ページから始めましょう。標準のユニバーサル ページ ヘッダーとフッターも必要です。
タイトル ページ--front.html
ここに非常に単純な HTML ファイルがあります:
私の個人的なホームページ -- ようこそ
私の個人ホームページ
ようこそ
ようこそ私のささやかな住居へ、ここにはまだ何もありませんが。
でも、すぐにさらに増えることを願っています。
私自身、1999 年
;/P>
連絡先情報ページ--count.html
同様に、別の単純なページがあります:
私の個人ホームページ - 連絡先情報
私の個人ホームページ
連絡先情報
< /H2>
1-800-PHP-INFO までご連絡ください
< ;SMALL>
著作権?1999年
3.2 HTMLからPHPへ
上からわかるように、すべてのページに同じヘッダーとフッターがあります。作業負荷が軽い場合は、上記のように各ページに同じ情報を書き込むのは問題ありませんが、100 ページを超えるページがあり、すべてのページのヘッダーまたは下部を変更する必要がある場合、どれだけの労力を費やさなければならないかを想像してみてください。ページごとに手動で変更するのは、なんと退屈で退屈な作業でしょう。したがって、これらのページの PHP ヘッダー ファイルと下部ファイルを作成し、すべての HTML ページでそれらを参照するだけで済みます。これらのインクルード ファイルは、include というサブディレクトリに配置します。以下では、これらのサイトに共通するコンテンツをファイルに書き込みます。
サイト全体の変数設定: common.inc
// サイト全体の変数
$MyEmail = "phptalk@tnc.org";
$MyEmailLink = "$MyEmail";
$MyName = "PHP Talk";
$MySiteName = $MyName." のホームページ";
?>
ユニバーサル ページ ヘッダー: header.inc
< ;?
// 一般的なページヘッダーを定義します
?>
echo "$MySiteName - $title" ?>
echo "$title" ; ?>
ユニバーサル ページ下部: フッター。 inc
//ユニバーサル ページ下部
?>
Copyright ? by
$MyName ($MyEmailLink)"; ?>
、1999
新しいページfront.php3 :
include("include/common.inc");
$title = "ようこそ";
include("include/header.inc");
?>
私のサイトへようこそここにはまだ何もありませんが、質素な住居です。
でも、すぐにさらに増えることを願っています。
include("include/footer.inc");
?>
新しいcont.php3:
include("include/common.inc"); $title = "連絡先情報";
include("include/header.inc");
?>
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);
fclose($ fp);
# カウント値を返します
return ($count);
}
?>
次に、このカウンターを表示するようにfront.php3ファイルを変更します:
include("include/counter.inc") ;
// カウント値を入れます counter.txt ファイルに入れ、読み取って出力します
printf ("%06d
n" ,
get_hitcount("counter.txt" ));
include("include/footer.inc");
?>
新しいfront.php3をチェックしてください
3.4フィードバックフォーム
フィードバックフォームをもう1つ追加しましょう視聴者が必要事項を記入して電子メールで送信してください。たとえば、非常に単純なメソッドを使用して実装します。1 つはビューアに入力フォームを提供するページ、もう 1 つはフォーム データを取得して処理し、メールで送信するページです。
PHP でフォーム データを取得するのは非常に簡単です。フォームが送信されると、フォームに含まれる各要素に対応する値が割り当てられ、一般変数への参照のように使用できます。
process_form.php3 では、変数 $mytext に入力された値が割り当てられます - 非常に簡単です。同様に、リストボックス、チェックボックス、ラジオボックス、ボタンなどのフォーム要素から変数値を取得できます。必要なのは、後で参照できるように、フォーム内の各要素に名前を付けることだけです。
この方法によれば、名前、メールアドレス、メッセージの3つの要素を含む単純なフォームを生成できます。訪問者がフォームを送信すると、フォームを処理する PHP ページ (sendfdbk.php3) がデータを読み取り、名前が空かどうかを確認し、最後にデータを電子メールで送信します。
フォーム: form.php3
include("include/common.inc");
$title = "フィードバック";
include("include/header.inc");
?>
< P>
if ( ! empty($searchstr) )
{
// empty() はクエリ文字列が空かどうかをチェックするために使用されます
// 空でない場合は grep query を呼び出します
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<で検索してください。 ;/B> ;
結果は返されませんでした。
n";
}
pclose($fp);
}
?>
include("include/footer.inc");
?> ;
注:
PHP_SELF は PHP の組み込み変数です。現在のファイル名が含まれます。
fgets() は、最大 4096 (指定された) 文字長までファイルを 1 行ずつ読み取ります。
fgetss() は、出力 HTML タグを解析することを除いて、fgets() に似ています。
split() のパラメータは 2 です。これは、出力を 2 つの部分に分割するだけでよいためです。 「:」も省略する必要があります。
each() は配列操作関数であり、配列全体をより簡単に走査するために使用されます。
popen()、pclose() は、パイプライン処理が追加されていることを除いて、fopen()、fclose() と非常によく似た機能を持っています。
上記のコードは検索エンジンを実装するための良い方法ではないことに注意してください。これは、PHP をより良く学習するための単なる例です。理想的には、キーワードのデータベースを構築してから検索する必要があります。