モバイルのもと

カウンタ付きダウンロードスクリプト

Jadファイルをダウンロードする際にカウンタを設置して見ます。ちょっと工夫して、どの携帯からダウンロードされているか分かるようにしてみます。シーケンス的には以下の様になります。

ダウンロードPHP

Jadファイルをダウンロードする際の必要要件としては、HTTPレスポンスヘッダーの中にContent-Typeの追加とContent-Lengthの追加があります。どちらもPHPで生成する必要がありますが、サーバが既に対応している場合はHeader()関数で出力する必要もないので以下のコードから削除すべきです。

ダウンロードを実行しつつカウンタを仕込むPHPスクリプトを以下の様に記述してみました。

<?php
$mailaddr = '<ここに通知用のメールアドレスを入れます>';
$fileName = 'counter.txt';  // カウンタ保存用ファイル
$jadfile = 'hoge.jad';
$jadfilesize = @filesize($jadfile);

// 以下はサーバによって追加、削除してみてください。
// MIMEタイプの追加
header('Content-type: text/vnd.sun.j2me.app-descriptor');
// Content-Lengthの追加
header("Content-Length: $jadfilesize");

// 今回はUSER AGENT毎にダウンロードカウントを保持します。
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if( is_null( $userAgent ) ) {
  $userAgent = 'x-unknown';
}

// カウンタファイルを読み込みます
if( $content = @file( $fileName ) ) {
  $nIndex = 0;

  // USER AGENT毎にカウンタの加算
  $isNewEntry = TRUE;

  // 一行毎に調査する
  foreach( $content as $strLine ) {

    $strLine = @trim( $strLine );
    // カウンタとUSER AGENTを分割
    list( $num, $ua ) = explode( ',', $strLine );

    if( is_null( $num ) ) {
      $num = 1;
    }
    
    // USER AGENTがマッチした場合
    if( 0 == strcmp( $ua, $userAgent ) ) {
      $num++;
      // 当該行の削除
      array_splice( $content, $nIndex, 1 );
      $isNewEntry = FALSE;
      break;
    }
  
    $nIndex++;
  }
}

if( $isNewEntry ) {
  $num = 1;
}

// 行の追加
$content[] = $num.','.$userAgent;

// ファイルの書き込み
reset( $content );
if( $file = @fopen($fileName, 'w') ) {
  foreach( $content as $strLine ) {

    $strLine = @trim( $strLine );
    fwrite( $file, $strLine."\n", 1000 );
  }
  @fclose( $file );
}

// Jadファイルを読み込んでクライアントへ返却する
@readfile( $jadfile );

// オマケでダウンロードされたことをメールで通知
@mail($mailaddr, "OAP download", @implode("\n", $content), "From: $mailaddr" );
?>

ダウンロードHTML

上記PHPを「download.php」とした場合、HTMLは以下の様に記載すれば良いと思います。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html>
<head>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>
ダウンロードページ
</title>
</head>
<body>
<a name="0">
<center>オープンアプリ<br />
ダウンロードページ</a><br />
</center>
<a href="device:jam?http://example.com/java/download.php"><img localsrc="59">ダウンロード</a><br />

</body>
</html>

カウンタファイル

上記PHPスクリプトを設置した際、以下の様なファイルが出来ます。(ウェブ上で実際に試してみた結果)

1,Mozilla/3.0(WILLCOM;SANYO/WX310SA/2;1/1/C128) NetFront/3.3
1,Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1) Gecko/20061010 Firefox/2.0
1,Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.5.8
1,FDM 2.x
1,Mozilla/4.0 (compatible;)
40,KDDI-JVM/1.0 (W51H; VM)
94,KDDI-JVM/1.0 (W51SA; VM)
23,KDDI-JVM/1.0 (W51S; VM)
109,KDDI-JVM/1.0 (W51CA; VM)

 


モバイルの素へ戻る MIDP Scrollトップへ戻る

Google
MIDP2.0 CLDC1.1 JSR WWW

Copyright 2007 Mobile no THU