Hi I have the following code which I am trying to adapt to make sure that when Like is clicked by a user who is logged in, then only one request is sent in a predetermined period of time that can be adjusted i.e Like can be clicked and a request sent only once every 5 minutes. There must be a javascript function I can use but I can’t figure it out.
index.php:
<?php include 'init.php'; include 'connect.php'; ?> <!doctype html> <html> <body> <?php $userid = $_SESSION['user_id']; echo '<a class="like" href="#" onclick="like_add(', $userid,');">Like</a>'; ?> <script type ="text/javascript" src="jquery-1.11.1.min.js"></script> <script type ="text/javascript" src="like.js"></script> </body> </html>
connect.php:
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "DB"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ?>
init.php:
<?php session_start(); $_SESSION['user_id']='1'; $userid = $_SESSION['user_id']; include 'connect.php'; include 'like.php'; ?>
like.js:
function like_add(userid) { $.post('like_add.php', {userid:userid}, function(data) { if (data == 'success'){ add_like($userid); } else { alert(data); } }); }
like.php:
<?php function add_like($userid) { include 'connect.php'; $stmt = $conn->prepare("INSERT INTO clicks (user) VALUES (?)"); $stmt->bind_param("s", $userid); $stmt->execute(); $stmt = $conn->prepare("SELECT max(id) FROM clicks WHERE user=?"); $stmt->bind_param("s", $userid); $stmt->execute(); $stmt->bind_result($click); $stmt->fetch(); echo $click; $stmt->close(); } ?
like_add.php
<?php include 'init.php'; if (isset($userid)) { $userid = $userid; add_like($userid); } ?>
Answer
If you pass the a tag into like_add like so:
<?php $userid = $_SESSION['user_id']; echo '<a class="like" href="#" onclick="like_add(this, '.$userid.');">Like</a>'; ?>
You can disable it in the javascript function for a set time period:
function like_add(a, userid) { a.disabled = true; setTimeout(function(){ a.disabled = false; ), 5000});//Code will execute in 5 seconds to enable the a tag $.post('like_add.php', {userid:userid}, function(data) { if (data == 'success'){ add_like($userid); }else{ alert(data); } }); }
Is this something alogn the lines of what you were looking for?