3 PHP の練習 PHP の多くの機能は他のソフトウェアまたはツールに関連しています。これまでに学んだ PHP の知識を使用して、単純なインタラクティブな Web サイトの構築を試みることができます。このプロセスを通じて私たちは多くのことを学ぶことができます。さて、ここで典型的な個人用 Web サイトの構築に焦点を当てましょう。 3.1 サイトを計画する 一般に、個人サイトにはウェルカム ページ、ゲストブック ページ、ブックマーク リンク ページ、カウンター、連絡先情報、さらには写真が含まれます。コレクションや音楽ファイルなど。タイトルページ、連絡先情報ページ、履歴書ページから始めましょう。標準のユニバーサル ページ ヘッダーとフッターも必要です。 タイトル ページ --front.html ここには非常に単純な HTML ファイルがあります:
私の個人ホームページ -- ようこそ 私の個人ホームページ < /H1> ようこそ ここにはまだ何もありませんが、私の質素な住居へようこそ。
しかし、すぐにさらに増えることを願っています。
著作権 ?1999 ;
連絡先情報ページ- -count.html
同様に、別の単純なページがあります:
私の個人ホームページ -- 連絡先 私の個人ホームページ 連絡先情報 1-800-PHP-INFO までご連絡ください
私自身、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 "$MySiteName"; ?> echo "$title"; ?>一般ページの下部: footer.inc
// 一般ページの下部
?>
著作権 ? by echo "$MyName ($MyEmailLink)" ?> , 1999 SMALL>
新しいページの前面.php3:
include("include/common.inc");
$title = "ようこそ";
include( "include/ header.inc");
?>
ここにはまだ何もありませんが、私の質素な住居へようこそ。
しかし、すぐにさらに増えることを願っています。
include("include/footer.inc");
?>
新しい cont.php3:
include("include/common.inc");
$title = " 連絡先Information";
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);
// ファイル操作が完了しました
}
//カウント値を増やす
$count ;
//新しいカウント値をファイルに書き込みます
$fp =fopen($counter_file," w");
fputs($fp,$count);
fclose($fp);
# カウント値を返す
return ($ count);
}
?>
次に、次のカウンタを表示するようにfront.php3ファイルを変更します:
include("include/counter.inc");
// ファイル counter.txt にカウンター値を入れ、読み出して出力します
printf ("
gt; d gt;
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");
?>
< FORM ACTION="sendfdbk.php3" METHOD="POST"> SIZE="20" MAXLENGTH= "30"> value="あなたのメールアドレス" NAME="メールアドレス">
include("include/footer.inc");
?>
プロセスフォーム: sendfdbk.php3
include("include/common.inc");
$title = "フィードバック";
include("include/header.inc");
if ( $name == "" )
{
// 今匿名コメントは大嫌い!
echo "え?どうして匿名なの?";
}
elseif ($name == "あなたの名前")
{
// この視聴者は本当に名前を出したくないのです!
echo "こんにちは ?
あなたの名前 は
あなたの実際の名前に置き換えることが提案されています!
}
else
{
// 丁寧なお礼を出力します
echo "
Hello, $name.
ご意見ありがとうございます。BR>
$MyName
$MyEmailLink
";
// 最後にメールを送信します
mail($ MyEmail, "Feedback.","
名前 : $name
電子メール : $email
コメント : $comment
");
}
include("include/footer.inc");
?>
3.5 シンプルなオンサイト検索エンジン
PHP は外部プログラムを呼び出すことができます。 Unix 環境では、grep プログラムを使用して単純な検索エンジンを実装できます。もう少し複雑にすることもできます。ページを使用して、ユーザーが検索文字列を入力してクエリ結果を出力するためのフォームを出力します。
include("include/common.inc");
$title = "検索";
include("include/ header.inc");
?>
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 "
n"; while(list ($fname,$fline) = each($myresult)) echo "$fname : $fline n"; echo " n";
}
else
{
// そうでない場合は、クエリ結果
echo "申し訳ありません。
$searchstrで検索すると、 結果が返されませんでした。 n"; } pclose($fp); } ?> include( "インクルード/フッター.inc" ;現在のファイル名が含まれます。 fgets() は、最大 4096 (指定された) 文字の長さでファイルを 1 行ずつ読み取ります。 fgetss() は、出力 HTML タグを解析することを除いて fgets() に似ています。 split() のパラメータは 2 です。これは、出力を 2 つの部分に分割するだけでよいためです。 「:」も省略する必要があります。 each() は配列操作関数であり、配列全体をより簡単に走査するために使用されます。 popen() と pclose() の関数は、パイプライン処理が追加されていることを除いて、fopen() と fclose() に非常に似ています。 上記のコードは検索エンジンを実装するための良い方法ではないことに注意してください。これは、PHP をより良く学ぶための単なる例です。理想的には、キーワードのデータベースを構築してから検索する必要があります。