我有一个表单,我希望一个用户每天提交一次。如果用户在一天内多次提交了该消息,则该消息将显示对不起您已经完成!
答案 0 :(得分:0)
您无法检查用户是否使用仅 JS或jQuery提交了表单,因为它们是基于客户端的语言...
你需要从服务器端做到这一点
例如,您可以使用PHP和/或数据库,或者在有人提交时存储cookie,然后检查他是否在一天之间提交。
答案 1 :(得分:0)
您可以这样做,但是当用户更改页面时,数据将会消失。这是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页面,它保存一个新的日期到数据库,并做提交表单时你想做的任何代码,或者你可以在保存新的日期到数据库后重定向到上一页,等