問題は、統計カウントを自分で実装した後、PHP 関数をサポートしていないページでその出力を使用したいことです。では、どうすればよいでしょうか。主な解決策は、JavaScript スクリプトを出力することです。これは、動的なニュースや広告投票の実装などに非常に便利です。もちろん、ここでは特定のプログラムのダウンロード数を非 PHP ページに出力する方法を説明します。
まず想像してみましょう: ../count/download.db などのカウント ファイルを Web サイトにダウンロードするプログラムがすでにあります。
ファイル形式は次のとおりです:
インデックス|ファイル名のヒント|リンク|カウント
ここでは「|」行で区切られていることに注意してください。処理にはテキストファイルを使用します。その中には次のようなデータ行がある可能性があります:
file1|Test file 1|../download/file1.zip|10
ダウンロード数が 10 回である可能性があることがわかります。これを他のページに 10 回出力したいだけです。
最初のステップ: Javascript スクリプトを作成します
とても簡単です:
ですよね! src に続くものは出力スクリプト プログラムを指し、「?」に続くものはスクリプトに渡されるパラメーターを指します。それでは、実行する前に、output.php はどのようなデータを出力
する必要があるのでしょうか? document.write() などの JavaScript ステートメントを出力する必要があります。このようにして、ブラウザーは、output.php
の出力を JavaScript プログラムとして扱い、このスクリプトが他の場所
から取得される点を除いて、直接書かれたスクリプトと同様に処理します。
さて、どのようなコンテンツを出力する必要があるかがわかったので、php プログラムを作成できます。
ステップ 2: 結果を出力する
$fp=fopen("../count/download.db", "r");
$flag=FALSE; )
{
$line=fgets($fp, 256);
list($index, $title, $url, $count)=split("|", $line); =strto lower($id))
{
$flag=TRUE;
}
}
fclose($fp)
if ($flag)
{
echo "document.write($count);";
}
else
echo "document.write("not found");";
?>
このコードも非常にシンプルですが、いくつか説明すべき点があります。まずファイルを開きます。 $flag は、指定されたインデックスのファイル レコードが見つかったかどうかを示し、
は最初に FALSE に設定されます。別のループでは、ファイルが終了していないことが条件となります。
次に、ループ本体が来ます。テキストの行を、できればもっと長く取り出します。フィールドを分割するには、区切り文字として「|」を使用します。使用される分割関数は正規表現であり、「|」は「」記号とともに使用される特殊記号であることに注意してください。次に、それらをそれぞれ対応する変数に代入します。ここで本当に重要なのは
$index と $count です。入力パラメータ $id と取得したインデックス ($index) が等しいかどうかを比較し、等しい場合は、見つかったフラグを TRUE に設定してループを終了します。それ以外の場合は、次のデータ行を検索します。
完了したら、ファイルを閉じ、マークが見つかったかどうかに基づいて、対応する JavaScript スクリプトを出力します。
$idの利用は、呼び出されたURL?id=xxxをPHPが自動的に処理し、直接利用することができます。
$HTTP_GET_VARS[id] を使用することもできます。
true