ページ
問題は、統計カウントを自分で実装した後、その出力を PHP 関数をサポートしていないページで使用したいことです。では、どうすればよいでしょうか。主な解決策は、JavaScript スクリプトを出力することです。これは、動的なニュースや広告投票の実装などに非常に便利です。もちろん、ここでは特定のプログラムのダウンロード数を非 PHP ページに出力する方法を説明します。
ファイル形式は、
インデックス|ファイル名のヒント|リンク|カウント
ここでは「|」行で区切られていることに注意してください。処理にはテキストファイルを使用します。その中には次のようなデータ行が含まれている可能性があります:
file1|Test file 1|../download/file1.zip|10
ダウンロード数が 10 回である可能性があることがわかります。これを他のページに 10 回出力したいだけです。
ステップ 1: Javascript を書く
とても簡単です:
< script language=javascript src="../bin/output.php?id=file1"< /script> ですよね! src に続くものは出力スクリプト プログラムを指し、「?」に続くものはスクリプトに渡されるパラメーターを指します。では、output.php を実行する前に、どのようなデータを出力する必要があるのでしょうか? document.write() などの JavaScript ステートメントを出力する必要があります。このようにして、ブラウザは、output.php の出力を JavaScript プログラムとして扱い、このスクリプトが他の場所から取得されることを除いて、直接書かれたスクリプトと同様に処理します。
さて、どのようなコンテンツを出力する必要があるかがわかったので、php プログラムを作成できます。
ステップ2:結果を出力する
$fp=fopen("../count/download.db", "r");
$flag=FALSE
while(!feof($fp))
{
$line=fgets($fp, 256);
list($index, $title, $url, $count)=split("|", $line); Index)==strto lower($id))
{
$flag=TRUE;
}
}
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] も使用できます。