我有一個表單,我希望有一個用戶提交它一天一次。如果用戶在一天內多次提交該消息,則該消息將顯示您已經完成的抱歉!限制用戶每天使用Jquery或J.S或php提交表格一次,或者使用php
回答
您可以這樣做,但是當用戶更改頁面時,數據將會消失。這是後話了JavaScript/jQuery的不應該處理:
做一個隱藏的輸入, 被按下時提交,有一個提交功能:
<form id=theForm>
<input type=hidden name=last id=last></input>
<input type=button onclick="submitFunction()"></input>
</form>
然後有一個腳本
<script>
submitFunction = function() {
var ONE_DAY = 60 * 60 * 1000 * 24; /* ms */
var lastTime = document.getElementById('last').value;
document.getElementById('last').value = new Date();
if (lastTime == "" || !lastTime)
{
document.getElementById('last').value = new Date();
document.getElementById('theForm').submit();
}
else if (((new Date()) - lastTime) < ONE_DAY)
{
alert('you must wait one day');
}
else {
document.getElementById('theForm').submit();
}
}
</script>
要正確解決這個問題我建議在用戶上次提交表單時使用PHP和數據庫記錄。這樣數據將永久保存。
要做到這一點與PHP: 首先創建一個數據庫; 對於這個例子,我將它稱爲測試數據庫,表將被稱爲lastcheck。表格中的 有一列:last_time設置爲時間戳; 那麼就
<?php
$last = "";
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "test";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("Select last_time from test.lastcheck order by last_time asc limit 1");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach($stmt->fetchAll() as $k=>$v) {
$last = $v;
}
}
catch(PDOException $e) {
$conn = null;
}
$conn = null;
echo '<form id=theForm>
<input type=hidden value="'.$last.'" name=last id=last></input>
<input type=button onclick="submitFunction()"></input>
</form>';
?>
<script>
submitFunction = function() {
var ONE_DAY = 60 * 60 * 1000 * 24; /* ms */
var lastTime = document.getElementById('last').value;
document.getElementById('last').value = new Date();
if (lastTime == "" || !lastTime)
{
document.getElementById('last').value = new Date();
document.getElementById('theForm').submit();
}
else if (((new Date()) - lastTime) < ONE_DAY)
{
alert('you must wait one day');
}
else {
document.getElementById('theForm').submit();
}
}
</script>
基本上所有這就是現在剩下的是你的窗體的方法。應該有一個動作導致新的php頁面將新的日期保存到數據庫中,並在表單提交時執行任何您想要執行的代碼,或者可以在將新日期保存到數據庫後重定向到上一頁,等等。
如果你可以這樣做** php **顯示我**代碼**在php –
完成。這是寫得很快,但我確定你可以理解我嘗試使用的邏輯。基本上所有的事情都是你的形式。
如果用戶提交的使用ONLY JS或jQuery的,因爲它們是基於客戶端語言形式不能檢查...
你需要做的是從服務器端。
例如,您可以使用PHP和/或數據庫或cookie在有人提交時存儲,然後檢查他是否在一天之間提交。
好的,如果你有一個解決方案在PHP然後**幫我** –
您只能在服務器上實施安全限制。 – SLaks
但我希望它在**客戶端** @SLaks –
不是一個大師,但我想最好的,你可以做客戶端存儲一些cookie ......但這是不可信的 – DaniP