3 PHP の練習
PHP の多くの機能は他のソフトウェアやツールに関連しています。これまでに学んだ PHP の知識を使用して、単純なインタラクティブな Web サイトの構築を試みることができます。このプロセスを通じて私たちは多くのことを学ぶことができます。それでは、典型的な個人 Web サイトの構築に焦点を当てましょう。
3.1 サイトを計画する
一般に、個人サイトには、ウェルカム ページ、ゲストブック ページ、ブックマーク リンク ページ、カウンター、連絡先情報、さらにはフォト アルバムやいくつかの音楽ファイルなどが含まれます。タイトルページ、連絡先情報ページ、履歴書ページから始めましょう。標準のユニバーサル ページ ヘッダーとフッターも必要です。
タイトル ページ --front.html
ここには非常に単純な HTML ファイルがあります。
< ; TITLE>
私の個人ホームページ -- ようこそ
私の個人ホームページ
ようこそ
私の質素な住居へようこそ。ここにはまだ何もありません。
しかし、すぐにさらに増えることを願っています。
私自身、1999 年
連絡先情報ページ--count.html
同様に、別の単純なページがあります:
私の個人ホームページ -- 連絡先情報
< ;/TITLE>
私の個人ホームページ
連絡先
1-800-PHP-INFO
までご連絡ください。
著作権、1999 年
< /P>
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 "$MySiteName"; ?>
title"; ?>
ユニバーサル ページ下部: footer.inc
//ユニバーサル ページ下部
?>
著作権? by
MyName ($MyEmailLink)"; ?>
、1999
HTML>
新しいページ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");
?>
< ;P>
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 ("< B>%06d B>
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
include("include/common.inc");
$title = "フィードバック";
include("include/header .inc");
?>
include("include/footer.inc");
?>
プロセスフォーム: sendfdbk.php3
include("include/common .inc");
$title = "フィードバック";
include("include/header.inc");
if ( $name == "" )
{
//今では匿名のコメントは嫌いです!
echo "そうですか? どうして匿名なのですか?";
}
elseif ($name == "あなたの名前")
{
// この視聴者は本当にそうしたくありません名前を付けてください!
echo "こんにちは ? あなたの名前 は
あなたの実際の名前に置き換えられるはずです!";
}
else
{
// 丁寧な感謝の言葉を出力します
echo "
こんにちは、$name。
フィードバックありがとうございます。大変感謝しております。
ありがとうございます
$MyName
$MyEmailLink
";
// 最後にメールを送信します
mail($MyEmail, "フィードバック . ","
名前 : $name
電子メール : $email
コメント : $コメント
");
}
include("include/footer.inc") ;
?>
3.5 シンプルなオンサイト検索エンジン
PHP は外部プログラムを呼び出すことができます。 Unix 環境では、grep プログラムを使用して単純な検索エンジンを実装できます。もう少し複雑にすることもできます。ページを使用して、ユーザーが検索文字列を入力してクエリ結果を出力するためのフォームを出力します。
include("include/common.inc");
$title = "検索";
include("include/header.inc");
?>
if ( ! empty($searchstr) )
{
// empty() が使用されているクエリ文字列が空かどうかを確認します
// 空でない場合は、 grep query
echo "
n";
// grep を呼び出して、大文字と小文字を区別しないモードですべてのファイルをクエリします
$ cmdstr = "grep -i $searchstr *";
$fp = Popen( $cmdstr, "r" ) // コマンドを実行し、パイプを出力します。
$myresult = array(); // クエリを保存します。 results
while( $buffer = fgetss ($fp, 4096))
{
// grep は次の形式を返します: ファイル名: 文字列に一致する行数
// したがって、関数 Split() はデータを分離して処理します
list($fname, $fline) = Split(":",$buffer, 2);
// 最初の一致の結果のみを出力します
if ( !define($myresult[$fname]))
$myresult[$fname] = $fline;
}
// これで結果を配列に保存し、処理して出力できるようになりました以下
if ( count($myresult) )
{
echo "n";
while(list($fname,$fline) = each($myresult))
echo "
$fname : $fline n";
echo "
n" ;
}
else
{
// 検索結果がない場合は
echo "申し訳ありません。$searchstr
で検索すると結果が返されませんでした。
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 をより良く学ぶための単なる例です。理想的には、キーワードのデータベースを構築してから検索する必要があります。
php 中国語ユーザーからの転載