jQueryとPHPを使い、画面遷移せずに回すクリックカウンター

jQuery
スポンサーリンク

jQueryとPHPを使い、画面遷移せずに回すクリックカウンターです。自分用メモ。

注意

動作を目的としているだけで、セキュリティ他で問題があるかもしれません。また、排他処理を行っていないため、膨大なクリック数が一度にされると、テキストファイルが壊れる可能性があります。

はじめに

  • jQueryとphpを使い、画面遷移せずにまわすカウンターを作る
  • カウンター情報は、テキストファイルに保存している(ここではcount01.txt)
  • phpの動作する環境が必要

ファイル構成

index.html

“`<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>カウントサンプル</title>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/count.js"></script>
</head>

<body>
<div id="btn01"><p><a href="javascript:void(0);">いいね!</a></p><span></span></div>
</body>
</html>“`

  • btn01というidでボタンがクリックされたり、カウントを表示したりするための判断を行います。
  • 12行目にある、spanの空要素部分にカウンター数字が入る

count.js

動作については、コメントとして記載した通り。

“`jQuery(document).ready(function(){
//初期時のカウンターファイル読み込み
//同じファイル名だと正常に読み込めないので、ランダムな数字を生成し、パラメータとして付けることで、ユニークな状態にしている。
var randnum1 = Math.floor( Math.random() * 10000 );
jQuery("#btn01 span").load("./count01.txt?r=" + randnum1);

//カウンター追加後の読み込み関数
function func01(data){
var randnum1 = Math.floor( Math.random() * 10000 );
jQuery("#btn01 span").load("./count01.txt?r=" + randnum1);
}

//カウンター+1追加処理
jQuery(‘#btn01 p’).click(function(e){
//「param1」変数の値と書き込みファイル名の情報をもってpost.phpへ。その後、関数func01を実行
jQuery.post("post.php" , {"param1": ‘count01.txt’} , func01);
jQuery("#btn01 span").load("./count01.txt");
});
});“`

post.php

ファイルにカウント数字を書き込んでファイルを閉じるだけ。(排他処理などをおこなっていないので、扱いに注意
“`<?php
$file = $_REQUEST[‘param1’];
$c = file_get_contents($file);
$c++;
$fp = fopen($file, "r+");
@fputs($fp,$c);
fclose($fp);
?>“`

count01.txt

書き込み属性を設定し、半角数字で「0」と入力しておきます。(任意に数字にしても可)

サンプルダウンロード

サンプルダウンロード(利用は自己責任ですよ)

※2011/01/13 サンプル公開をやめ、ダウンロードの形に変更しました

最後に

正常に動かない場合は、パーミッションの設定に問題がある事が多いです。