时间:2021-07-01 10:21:17 帮助过:14人阅读
?防止多个表单提交使用Javascript
使用Javascript块重复提交可能是最简单的方法。当有人提交表单我们简单地禁用Submit按钮,可能改变它的值为更具描述性的东西,比如“提交,请稍候……”
试着点击这个按钮,例如。它仍将禁用,直到你重新加载此页面:
第一步是要给你的提交按钮一个惟一的id,例如id =“myButton“:
第二个(也是最后一次)的步骤是给两个Javascript命令
onsubmit="document.getElementById('myButton').disabled=true; document.getElementById('myButton').value='Submitting, please wait...';"
你的表单标记将类似于:
就是这样。这种方法应该于大多数的浏览器(IE +,FireFox、Opera、…)。
?防止多个表单提交使用cookie
如果你想避免重复提交的整个浏览器会话(或更长),你可以考虑使用Cookie。例如编辑自己的表单处理脚本的浏览器发送cookie的形式后,已被处理,但在此之前的任何HTML或重定向打印头被。将这段代码的mail()命令后,应在大多数情况下:
setcookie('FormSubmitted', '1');
然后在处理之前检查cookie。如果有这个访问者已经提交了表单在活跃的浏览器会话。将下列代码添加到窗体的开始处理脚本:
if (isset($_COOKIE['FormSubmitted']) { die('You may only submit this form once per session!'); }
就是这样! 如果修改,以阻止重复提交与cookies。注意:在上面的脚本和cookie的打印代码调用后添加一些代码的mail()函数:
/* Prevent duplicate submissions */ if (isset($_COOKIE['FormSubmitted']) { show_error('You may only submit this form once per session!'); } /* Set e-mail recipient */ $myemail = "you@domain.com"; /* Check all form inputs using check_input function */ $yourname = check_input($_POST['yourname'], "Enter your name"); $subject = check_input($_POST['subject'], "Write a subject"); $email = check_input($_POST['email']); $website = check_input($_POST['website']); $likeit = check_input($_POST['likeit']); $how_find = check_input($_POST['how']); $comments = check_input($_POST['comments'], "Write your comments"); //www.software8.co 原文 /* If e-mail is not valid show error message */ if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) { show_error("E-mail address not valid"); } /* If URL is not valid set $website to empty */ if (!preg_match("/^(https?:\/\/+[\w\-]+\.[\w\-]+)/i", $website)) { $website = ''; } /* Let's prepare the message for the e-mail */ $message = "Hello! Your contact form has been submitted by: Name: $yourname E-mail: $email URL: $website Like the website? $likeit How did he/she find it? $how_find Comments: $comments End of message "; /* Send the message using mail() function */ mail($myemail, $subject, $message); /* Set a cookie to prevent duplicate submissions */ setcookie('FormSubmitted', '1'); /* Redirect visitor to the thank you page */ header('Location: thanks.htm'); exit(); /* Functions we used */ function check_input($data, $problem='') { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); if ($problem && strlen($data) == 0) { show_error($problem); } return $data; } function show_error($myError) { ?> Please correct the following error:
< 上一篇
写法下的一种突发奇想,创新~
下一篇 >
请教怎么开发一个小型的投票系统
记住我的登录 忘记密码?
登录
我已阅读用户协议及版权声明
注册