シンプルなインタラクティブウェブサイトの構築(2)
5.5 Counter
ホームページにカウンターを追加してみましょう。この例は何度も説明されていますが、ファイルの読み取りと書き込み、および独自の関数の作成方法を示すのに依然として役立ちます。 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($fp,$count); fp);
# カウント値を返します
}
?>
次に、このカウンターを表示するように、front.php3 ファイルを変更します。
;
// カウント値をファイル counter.txt に配置し、読み取って出力します
printf ("
gt;%06dgt;
n" ,
get_hitcount("counter.txt" ));
include("include/footer.inc")
?>
新しいfront.php3をチェックしてください
5.6フィードバックフォーム
訪問者向けに別のフィードバックフォームを追加しましょう記入して電子メールで送信してください。たとえば、非常に単純なメソッドを使用して実装します。1 つはビューアに入力フォームを提供するページ、もう 1 つはフォーム データを取得して処理し、メールで送信するページです。
PHPでフォームデータを取得するのはとても簡単です。フォームが送信されると、フォームに含まれる各要素に対応する値が割り当てられ、一般変数への参照のように使用できます。
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< /A> : $fline n";
echo "
n";
}
else
{
// クエリ結果がない場合
echo "は結果を返しませんでした。
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 初心者 (6) を紹介しました。路上運転初心者の内容も含めて、PHP チュートリアルに興味のある友人の参考になれば幸いです。