基本上我拥有的是某种形式,并且:
<?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点。谢谢你的帮助
答案 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)
答案 3 :(得分:0)
首先不要回复客户端(浏览器)时钟。如果最终用户如此期望,这可以被捏造。而是使用PHP创建会话,并标记表单可以提交的最后日期/时间的日期/时间。收到该表格后,请使用服务器日期/时间(最终用户无法捏造的日期/时间)进行检查。
通过这种方式,您可以绝对确保不会阻止提交表单的更多安全性。
但是,您可以使用Javascript来提高用户体验,但不会回复客户端的日期/时间以保护数据库。