Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 限制用户每天使用Jquery、J.S或php提交一次表单_Javascript_Php_Jquery_Forms - Fatal编程技术网

Javascript 限制用户每天使用Jquery、J.S或php提交一次表单

Javascript 限制用户每天使用Jquery、J.S或php提交一次表单,javascript,php,jquery,forms,Javascript,Php,Jquery,Forms,我有一个表单,我希望一个用户每天提交一次。如果用户在一天内提交了一次以上,则消息将显示对不起,您已经提交了 您无法检查用户是否仅使用JS或jQuery提交表单,因为它们是基于客户端的语言… 您需要从服务器端执行此操作。 例如,当某人提交时,您可以使用PHP和/或数据库或cookies进行存储,然后检查他是否在一天之间提交。您可以这样做,但是当用户更改页面时,数据将消失。这是javascript/jquery不应该处理的: 做一个隐藏的输入, 按下submit时,具有提交功能: <form

我有一个表单,我希望一个用户每天提交一次。如果用户在一天内提交了一次以上,则消息将显示对不起,您已经提交了

您无法检查用户是否仅使用JS或jQuery提交表单,因为它们是基于客户端的语言…
您需要从服务器端执行此操作。

例如,当某人提交时,您可以使用PHP和/或数据库或cookies进行存储,然后检查他是否在一天之间提交。

您可以这样做,但是当用户更改页面时,数据将消失。这是javascript/jquery不应该处理的:

做一个隐藏的输入, 按下submit时,具有提交功能:

<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>

submitFunction=函数(){
var一天=60*60*1000*24;/*ms*/
var lastTime=document.getElementById('last').value;
document.getElementById('last')。值=新日期();
如果(lastTime==“”| |!lastTime)
{
document.getElementById('last')。值=新日期();
document.getElementById('theForm').submit();
}
如果(((新日期())-上次时间)<一天)
{
警惕(“你必须等一天”);
}
否则{
document.getElementById('theForm').submit();
}
}
为了正确地解决这个问题,我建议在用户上次提交表单时使用带有数据库记录的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>

submitFunction=函数(){
var一天=60*60*1000*24;/*ms*/
var lastTime=document.getElementById('last').value;
document.getElementById('last')。值=新日期();
如果(lastTime==“”| |!lastTime)
{
document.getElementById('last')。值=新日期();
document.getElementById('theForm').submit();
}
如果(((新日期())-上次时间)<一天)
{
警惕(“你必须等一天”);
}
否则{
document.getElementById('theForm').submit();
}
}

基本上,现在剩下的就是表单的方法。应该有一个导致新php页面的操作,该页面将新日期保存到数据库中,并在表单提交时执行您希望执行的任何代码,或者您可以在将新日期保存到数据库后重定向到上一页,等等。

您只能在服务器上实现安全限制。但我希望在客户端@slaks中实现它,而不是一个专家,但我想您最好在客户端存储一些cookie。。。但这是不可信任的欢迎使用堆栈溢出!我们是一个志愿者社区,为陷入特定任务的程序员提供帮助。我们不是为您编写免费代码的服务机构。请阅读并@AliHassan:那么你就没有任何安全性了。好的,如果你有一个php解决方案,那么请帮助我如果你可以用php实现这一点,请用phpOne向我展示代码。这是写得很快,但我相信你可以理解我试图使用的逻辑。基本上,剩下的就是表单的方法。应该有一个导致php页面的操作,该页面将新日期保存到数据库中,并在表单提交时执行您希望执行的任何代码,或者您可以在将新日期保存到数据库后重定向到上一页。如果这对你有帮助,请接受我的回答。