如何在一段时间后提交表格不可提交?

时间:2012-10-25 12:27:15

标签: php mysql forms mysqli

基本上我拥有的是某种形式,并且:

<?php

require 'inc/conn.php'; 

$sql="INSERT INTO objednavky ( kdo, kdy, m1, mm1, m2, mm2, m3, mm3 )
VALUES
('$_POST[tkdo]','$_POST[thed]','$_POST[obb1]','$_POST[tmm1]',
'$_POST[obb2]','$_POST[tmm2]','$_POST[obb3]','$_POST[tmm3]')";

if (!mysql_query($sql,$con))
{
  die('Error: ' . mysql_error());
}

header('Location: http://www.juxcore.com/x/vita/protected.php');

mysql_close($con);

我需要让表格不可提交以防万一,例如星期四,而你可以提交的最后一刻是星期三晚上18点。谢谢你的帮助

4 个答案:

答案 0 :(得分:2)

看来你的问题实际上是一个HTML / Javascript问题,而不是PHP / SQL。

因为乍一看我会说用Javascript更改HTML,以便他们无法提交表单。

document.getElementById("myform").action = "";

...会阻止提交。有很多方法,包括将form切换为div

document.getElementById("myform").setAttribute("type","div");

或者,从显示中删除提交按钮,以便他们无法点击它:

document.getElementById("mysubmit").style.display="none";
编辑:哦,我完全忘记了显而易见的方法,使用表单验证。这样他们就不能停留在URL上,直到星期三之后仍然以HTML格式提交

<form ... onsubmit="return validateForm()">

只需编写javascript函数validateForm(类似于下面的php),返回false即可取消提交。我不喜欢给w3school链接,但这是一个很好的简洁示例:http://www.w3schools.com/js/js_form_validation.asp

无论如何,还有很多方法。只需在正确的日子里做一次,使用javascript的new Date().getDay()new Date().getHours()来确定何时。

(这也是改变元素属性的两种主要方法的一个例子。)

我想这并不能阻止他们直接从地址行提交,如果您需要编辑PHP,请使用Date()对象:

$day = Date("w");
if ( $day == 4 || $day == 5 ) {
    $time = Date("G");
    if ( $day != 5 || $time < 18 ) {
        if (!mysql_query($sql,$con)) die('Error: ' . mysql_error());
    }
}

我建议同时使用HTML / Javascript方式控制它,并使用内置于服务器中的相同控件。

答案 1 :(得分:0)

您可以将一些JS附加到您的视图中,以使表单不可提交。

我的想法是:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    <?php if($currentDay < $dontSubmitFormDay):?>
         $('#myForm').submit(function(){
              return false;
         });
    <?php endif;?>
});
</script>

答案 2 :(得分:0)

你需要在周三下午6点获得当天的timestamp。然后,每次用户提交表单时,请获取该确切时间的timestamp并进行比较:

如果(timenow

答案 3 :(得分:0)

首先不要回复客户端(浏览器)时钟。如果最终用户如此期望,这可以被捏造。而是使用PHP创建会话,并标记表单可以提交的最后日期/时间的日期/时间。收到该表格后,请使用服务器日期/时间(最终用户无法捏造的日期/时间)进行检查。

通过这种方式,您可以绝对确保不会阻止提交表单的更多安全性。

但是,您可以使用Javascript来提高用户体验,但不会回复客户端的日期/时间以保护数据库。