Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. //ボタン表示のphpファイル
  2. <button class="letsVote" data-id='buttonID' data-numhtml="countNum1">
  3. <span class="countNum1"><?php echo getVoteCount('buttonID'); ?></span>
  4. </button>
  5.  
  6. <?php
  7. //----------------------------------------------------------
  8. // 投票数取得関数
  9. //----------------------------------------------------------
  10. function getVoteCount($id) {
  11. //ファイル名
  12. $filename = "log/".$id.".count";
  13. $fp = @fopen($filename, "r");
  14. if ($fp) {
  15. $vote = fgets($fp, 9182);
  16. } else {
  17. $vote = 0;
  18. }
  19. return $vote;
  20. }
  21. ?>
  22.  
  23. <?php
  24. //vote.php
  25.  
  26. //////ajaxデータを受信1
  27. $file_id = $_POST["file_id"]; //ファイル名
  28. $count = $_POST["count"]; //投票数
  29. $cookieName = "vote_" . $file_id; //クッキー名。
  30. $cookieTime = time() + 10; //クッキーの有効期限(投票を制限する秒数)
  31.  
  32. ///////クッキーが有効
  33. if(isset($_COOKIE[$cookieName])){
  34. echo "クッキー制御により投票不可です。";
  35.  
  36. }else{
  37. ///////クッキーが無効=カウントアップ
  38. $count = $_POST["count"]; //投票数
  39.  
  40. //カウント数を書き出すファイル名
  41. $fileName = "log/" . $file_id . ".count";
  42.  
  43. $fp = @fopen($fileName , "w"); //書き込みモードで開く
  44.  
  45. flock($fp , LOCK_EX); //排他的ロック(書く準備) 他のロックをすべてブロック
  46. fputs($fp , $count); //カウント数を書き込み
  47. flock($fp , LOCK_UN); //ロック開放
  48. fclose($fp);
  49.  
  50. setcookie($cookieName , $count , $cookieTime); //10秒有効のクッキーをセット
  51.  
  52. echo "Complete"; //clickCount.jsにはここの値を返す
  53. }
  54. ?>
  55.  
  56. $(function(){
  57.  
  58. $('.letsVote').on('click' , function(){
  59.  
  60. $this = $(this);
  61. var id = $this.data("id"); //識別用ID(重複NG)
  62. var numHtml = "." + $this.data("numhtml"); //カウント数を表示するHTML
  63. var nowCount = Number($(numHtml).html()); //現在のカウント数
  64. var newCount = nowCount + 1;
  65.  
  66. $.ajax({
  67. type : "POST",
  68. url : "vote.php",
  69. data: {
  70. "file_id" : id,
  71. "count" : newCount
  72. }
  73. }).done(function(data , datatype){
  74. //送信先のvote.phpから、Completeが返ってきたらカウント更新
  75. if(data == "Complete"){
  76. $(numHtml).html(newCount);
  77. }else{
  78. alert("押しすぎ(´・ω・`)");
  79. }
  80. }).fail(function(XMLHttpRequest, textStatus, errorThrown) {
  81. $("#XMLHttpRequest").html("XMLHttpRequest : " + XMLHttpRequest.status);
  82. $("#textStatus").html("textStatus : " + textStatus);
  83. $("#errorThrown").html("errorThrown : " + errorThrown.message);
  84. });
  85.     });
  86. });
  87.  
  88. <?php echo getVoteCount('buttonID'); ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement