以前用的js表单防止重复提交方法
代码如下<script type="text/javascript">
var checkSubmitFlg = false;
function checkSubmit() {
if (!checkSubmitFlg) {
// 第一次提交
checkSubmitFlg = true;
return true;
} else {
//重复提交
alert("Submit again!");
return false;
}
}
</script>
//以下三种方式分别调用
<form onsubmit="return checkSubmit();">
<input type="submit" onclick="return checkSubmit();" />
<input type="button" onclick="document.forms[0].action='./test';document.forms[0].submit();return checkSubmit();" />
这样如果我直接做一个表单,然后提交给/test,上面代理就是一个摆设了,那我们要如何解决此问题
如果您已经知道如何解决的话那么这篇文章可能不适合你的口味,paperen这里也打算从基础开始讨论,所以希望一步看到解决方案的您也可能不太适合,所以请注意。So~开始吧 ~
paperen想您一定知道表单是什么吧,form元素就是表单,一般网页需要输入的地方必定使用了表单元素,也很常见,一般的代码如下:
代码如下 <form
method="post">
<p>
<label for="test">随便输入点什么www.45it.com</label>
<input type="text" name="data" id="test" />
</p>
<p>
<input type="submit" value="提交" name="submit" />
</p>
</ul>
</form>
重点其实是form与input元素,p元素只是paperen私自加上去的,对后续的说明没有任何影响,其实很简单,所谓input就是输入了,你可以完全将input 元素理解为是用作用户输入,只是某些属性的(type)不能作为输入而已(这里就是submit),而form元素你完全可以将它理解为是一个袋子,将所有用户输入数据到装在它里面之后用 来提交回服务端处理,但对于form元素值得注意的是method属性,一般来说有get与post两种方法,其实不要想得太复杂(因为深入的不需要太理解,对于后续的内容没有太多关系,如 有兴趣不妨可以使用浏览器的调试工具查看请求头部信息与发送信息,例如firebug),表现出来就是,使用get提交表单的话所有的input元素的值将会在地址栏处出现,而post则不会, 例如使用get提交此表单后的浏览器地址栏
代码如下http://localhost/mytest/token/form.php?data=test&submit=%E6%8F%90%E4%BA%A4
post则在 地址栏看不到了,使用fiebug可以看到如下信息
可以简单认为get是显式传送数据的,而 post则是隐式传送数据的,但还有一个很大区别的是post支持更多更大的数据传送。
Next,当表单代码写好了,那么让我们来进行服务器脚本的编写(这里就是PHP)。很简单 ~
代码如下 <?php