差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
dokuwiki:downloadcount [2006/12/09] – 外部編集 127.0.0.1dokuwiki:downloadcount [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1
行 1: 行 1:
 +====== ダウンロード数をカウントする ======
 +ダウンロード数をカウントします。
 +  * 連続した同じIPアドレスはカウントしません。
 +  * データベースを使うので、ファイルを作成しません。
 +  * データベースの設定は、ユーザー認証のMySQLの設定を使うので、設定済みであれば設定不要。
 +  - データベースにテーブルを作成しておく。<code mysql>
 +CREATE TABLE `dlcount` (
 +`id` VARCHAR( 255 ) NOT NULL DEFAULT '',
 +`count` INT( 15 ) UNSIGNED NOT NULL DEFAULT '0',
 +`ip` VARCHAR( 15 ) DEFAULT NULL ,
 +PRIMARY KEY ( `id` )
 +)
 +</code>
 +  - lib/exe/fetch.phpを開き、sendFileの前にDownload_countを挿入、後ろにfunction Download_countを定義する。<code php>
 +  //handle image resizing
 +  if((substr($MIME,0,5) == 'image') && $WIDTH){
 +    $FILE = get_resized($FILE,$EXT,$WIDTH,$HEIGHT);
 +  }
 +
 +  if(!(substr($MIME,0,5) == 'image')) {Download_count($MEDIA);}
 +
 +  // finally send the file to the client
 +  sendFile($FILE,$MIME,$CACHE);
 +
 +/* ------------------------------------------------------------------------ */
 +function Download_count($ID) {
 +  global $conf;
 +  $dlc_server=$conf['auth']['mysql']['server'];
 +  $dlc_user=$conf['auth']['mysql']['user'];
 +  $dlc_password=$conf['auth']['mysql']['password'];
 +  $dlc_database=$conf['auth']['mysql']['database'];
 +  $dlc_table="dlcount";
 +  $dlc_ip = $_SERVER['REMOTE_ADDR'];
 +  $con = @mysql_connect ($dlc_server, $dlc_user, $dlc_password);
 +  if ($con) {
 +    $res=mysql_select_db($dlc_database, $con);
 +    if ($res) {
 +      $query = "SELECT count,ip FROM $dlc_table WHERE id = '$ID'";
 +      $res = @mysql_query($query, $con);
 +      $row = @mysql_fetch_object($res);
 +      $count = intval($row->count);
 +      if (@mysql_num_rows($res) == 0) {
 +        $query = "INSERT INTO $dlc_table VALUES ('$ID','1', '$dlc_ip')";
 +        $res2 = @mysql_query($query, $con);
 +        $count = 1;
 +      } else {
 +        if ($dlc_ip != $row->ip) {
 +          $count++;
 +          $query = "UPDATE $dlc_table SET ip='$dlc_ip', count='$count' WHERE id = '$ID'";
 +          $res2 = @mysql_query($query, $con);
 +        }
 +      }
 +    }
 +  }
 +}
 +</code>