Home > FreeProgram >クリックしたらカウントしてDL

クリックしたらカウントしてDL

ダウンロードのされたカウントを保存してゆく ダウンロード版を制作したらどれだけDLされているか知りたいもの、ここでは最も単純なカウンターを作りました、ログは別に見るようにしています。最低限の機能しかありません。

ログは直接叩いて見てください(かなり乱暴ですが) お気に入りからでも覗けますので...

再読み込みしないとカウントはあがりません!

サンプル&ダウンロード

sample bite表示

クリックするとDLしてカウントアップします。

zip1.zip

DL:

zip2.zip

DL:

zip3.zip

DL:



downloadCounter.zip ( ) DL:

ソースコード(PHP)

downloadCounter.php


//書類名があった場合のみ
if(isset($DL)){
if($urlSW==0){
$add="1<>".$DL."<>\n";
array_push($Array,$add);
}
}

downLoad($DL);//ダウンロード
saveFile($FileName,$Array);//-----保存

///////////////////////////////////////////////////////////////////////////////
function downLoad($DL){
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); //HTTP/1.0
header('Content-type: application/x-shockwave-flash');
header("Location: $DL");
}

 

//----読み込み
function LoadFile($FileName){//---------ファイル読み込み
$DammyArray=array(); //-ダミー配列初期化
$fp=fopen($FileName,'r'); //読み込みモードで
while (!feof($fp)){ //ファイルの最後まで
$line=fgets($fp); //1行づつ全部読み込み
array_push($DammyArray,$line);//-----配列へ
}
fclose($fp);//---------ファイル閉じる
return $DammyArray;//----配列を返す
}

//---書き込み保存
function saveFile($FileName,$Array){//---------ファイル書き込み保存
$fp=fopen($FileName,"w+"); //書き込みモードで
flock($fp,LOCK_EX); //---ファイルロック
$DATA="";
foreach($Array as $value){
$DATA.=$value;//---配列全部$DATAに結合
}
fwrite($fp,$DATA);//---書き込み
flock($fp,LOCK_UN);//-------ロック解除
fclose($fp);//---------ファイル閉じる
//echo "<p>保存しました";
}
?>

ソースコードをtxt表示

 

showCounter.php

<?php
/*
累計カウンター読み込み
*/
$DL=$_GET[file];
$FileName='downloadCounter.log';//--------保存ログ 書類名
if(file_exists($FileName)==1){
$Array=LoadFile($FileName);//-------ファイル読み込み配列に代入
//echo "読み込みました<p>";
}else{
echo "{$FileName}は存在しません";
}
$Num=0;
for($i=0;$i<count($Array);$i++){//---foreach には asが必要です
$dammyArray=explode("<>",$Array[$i]);//---文字列分割する
$URL=$dammyArray[1];
if($dammyArray[1]==$DL){
$Num=$dammyArray[0];
}
}
echo "document.write(\"$Num\")";

///////////////////////////////////////////////////////////////////////////////
//----読み込み
function LoadFile($FileName){ //---------ファイル読み込み
$DammyArray=array(); //-ダミー配列初期化
$fp=fopen($FileName,'r'); //読み込みモードで
while (!feof($fp)){ //ファイルの最後まで
$line=fgets($fp); //1行づつ全部読み込み
array_push($DammyArray,$line);//-----配列へ
}
fclose($fp);//---------ファイル閉じる
return $DammyArray;//----配列を返す
}

?>

ソースコードをtxt表示

設置方法 使い方

htmlにの好きなところへ以下のものを記述する

//クリックしたらカウント

<a href="downloadCounter.php?file=zip1.zip">DL</a>

 

//カウント表示させる

<script type="text/javascript" src="showCounter.php?file=zip1.zip"></script>

 

 

クリックカウンター

file=の後ろに調べる書類名を書く 次に単位を指定する file=ダウンロードする書類名(PHPからのパス)

 

カウント表示

src=の後ろはshowCounter.phpまでのパスを記述  file=の後ろに調べる書類名を書く 上のクリックカウンターと同じ名称にする

 

書類

  1. downloadCounter.log(666)---ログ保存
  2. downloadCounter.php-----クリックカウンター
  3. showCounter.php----カウンターを見せる

 

TIPS

同じものをコピーして使用するよりは 上の階層に置いて、パスで使いまわすと便利です 。

そのときにパスの位置が問題です。 hrefや src は php までの パスです、file=はphpからのパスなので注意が必要です。

サーバーにアップしないと見れません。あしからず。

制作日:2009/05/09 最終更新日:

back