Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //ボタン表示のphpファイル
- <button class="letsVote" data-id='buttonID' data-numhtml="countNum1">
- <span class="countNum1"><?php echo getVoteCount('buttonID'); ?></span>
- </button>
- <?php
- //----------------------------------------------------------
- // 投票数取得関数
- //----------------------------------------------------------
- function getVoteCount($id) {
- //ファイル名
- $filename = "log/".$id.".count";
- $fp = @fopen($filename, "r");
- if ($fp) {
- $vote = fgets($fp, 9182);
- } else {
- $vote = 0;
- }
- return $vote;
- }
- ?>
- <?php
- //vote.php
- //////ajaxデータを受信1
- $file_id = $_POST["file_id"]; //ファイル名
- $count = $_POST["count"]; //投票数
- $cookieName = "vote_" . $file_id; //クッキー名。
- $cookieTime = time() + 10; //クッキーの有効期限(投票を制限する秒数)
- ///////クッキーが有効
- if(isset($_COOKIE[$cookieName])){
- echo "クッキー制御により投票不可です。";
- }else{
- ///////クッキーが無効=カウントアップ
- $count = $_POST["count"]; //投票数
- //カウント数を書き出すファイル名
- $fileName = "log/" . $file_id . ".count";
- $fp = @fopen($fileName , "w"); //書き込みモードで開く
- flock($fp , LOCK_EX); //排他的ロック(書く準備) 他のロックをすべてブロック
- fputs($fp , $count); //カウント数を書き込み
- flock($fp , LOCK_UN); //ロック開放
- fclose($fp);
- setcookie($cookieName , $count , $cookieTime); //10秒有効のクッキーをセット
- echo "Complete"; //clickCount.jsにはここの値を返す
- }
- ?>
- $(function(){
- $('.letsVote').on('click' , function(){
- $this = $(this);
- var id = $this.data("id"); //識別用ID(重複NG)
- var numHtml = "." + $this.data("numhtml"); //カウント数を表示するHTML
- var nowCount = Number($(numHtml).html()); //現在のカウント数
- var newCount = nowCount + 1;
- $.ajax({
- type : "POST",
- url : "vote.php",
- data: {
- "file_id" : id,
- "count" : newCount
- }
- }).done(function(data , datatype){
- //送信先のvote.phpから、Completeが返ってきたらカウント更新
- if(data == "Complete"){
- $(numHtml).html(newCount);
- }else{
- alert("押しすぎ(´・ω・`)");
- }
- }).fail(function(XMLHttpRequest, textStatus, errorThrown) {
- $("#XMLHttpRequest").html("XMLHttpRequest : " + XMLHttpRequest.status);
- $("#textStatus").html("textStatus : " + textStatus);
- $("#errorThrown").html("errorThrown : " + errorThrown.message);
- });
- });
- });
- <?php echo getVoteCount('buttonID'); ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement