2014-09-20 45 views
-1

我有一個執行動作的按鈕,是否可以創建一個定時器,以便按鈕每6小時左右才能使用?是否可以添加一個計時器到按鈕?

需要針對每個特定用戶,因此,如果一個用戶按下該按鈕,則不會影響其他用戶的冷卻或按下它的能力。

這裏的形式

<html> 
<body> 
<form action="addgold.php"> 
<input type="submit" name="Add gold" value="Work" onclick="addgold()" /> 
</form> 

而這裏的行動,如果它是需要

<?php error_reporting(E_ALL); ini_set('display_errors', 1); 
include("header.php"); 
include("connect.php"); 
if(isset($_SESSION['userlogin'])){ 
$username = $_SESSION['userlogin']; 
$sql = "SELECT stats.id, stats.gold, users.id, users.username FROM stats, users WHERE users.username  = '$username' AND stats.id = users.id"; 
$retval = mysqli_query($con,$sql); 

while($row = mysqli_fetch_array($retval, MYSQL_ASSOC)) 
{ 
echo "Gold :{$row['gold']} <br> ". 

    "--------------------------------<br>"; 
} 
$row = mysqli_fetch_row($retval); 
$result = $row[0]; 


echo "<a href=\"main.php\">Back to main page</a>"; 
}else{ 
?> 

<?php 
echo "fail"; 
} 
?> 

我發現了一個類似的答案,這在另一個#1問題(這個網站的一切)按鈕執行說它只能在JavaScript中完成,這是好的,除了我沒有關於JavaScript的線索! 有一些代碼,他/她把它

window.setTimeout(function() { 
document.forms['form_name'].submit(); 
}, 1000); 

但我在哪裏放呢?到我的PHP頁面?如果是的話,在哪裏?

+0

這不是JAVA,而是Javascript。巨大的差異。 – tttpapi 2014-09-20 10:58:00

+0

您需要保存用戶和上次點擊按鈕(最好在數據庫中)。 – loveNoHate 2014-09-20 10:59:11

+0

@tttpapi我知道對不起,編輯! – 2014-09-20 11:00:14

回答

1

如何讓按鈕起作用非常重要。

1)難道只有註冊用戶

保存到數據庫中。然後只需檢查數據庫時間差。

2)給大家

如果沒有100%準確的,你可以使用一個會話,或者您也可以將信息保存到數據庫,然後檢查的差別。

+0

通過數據庫保存它似乎是最好的方法:)我會接受它,謝謝! – 2014-09-20 11:07:10

1

假設您的應用程序具有身份驗證功能,可以唯一標識每個用戶,您可以在數據庫中創建一個表格(或者添加一列到用戶表格),該表格將用戶最後一次按下該按鈕的時間存儲爲DATETIME類型。

然後當請求頁面時你所要做的就是計算當前時間與存儲在數據庫中的時間之間的差異。使用mysql:

SELECT HOUR(TIMEDIFF(NOW(),last_pressed)) AS time_passed FROM my_table 

如果差異小於6小時,您只需刪除或禁用該按鈕。請注意,刪除按鈕是不夠的,因爲經驗豐富的用戶可以通過瀏覽器的URL欄或使用curl而不使用按鈕來發送請求,所以您也必須在服務器端阻止該操作。

如果您沒有正確的會話認證,可以使用@ploutch的解決方案,並保存IP地址而不是用戶ID。這並不完美,因爲發送到服務器的頭文件可能會被客戶端篡改。

1

如果將限制器放在JavaScript中,它將在客戶端完成,這意味着如果用戶知道編程,他將很容易就能夠繞過該保護。

如果您確實想要強制執行點擊之間的時間限制,則應該在服務器端完成,但這意味着服務器必須能夠識別客戶端。通常所做的是使用IP地址(即使它不完美),您可以通過檢查PHP中的$_SERVER['REMOTE_ADDR']變量來獲得該地址。

-1

嘗試在JavaScript

<input type="button" value="click" id="click" onclick="foo(this);"/>​ 

在JavaScript

function foo(obj) { 
    obj.disabled = true; 
    setTimeout(function() { 
     obj.disabled = false; 
    }, 2000); 
}​ 
1

如果你想強迫的點擊之間的時間限制遵守你一定會需要在PHP中使用$_SESSION[]setTimeout功能(服務器端)爲此目的並將信息保存到數據庫。

相關問題