用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5939|回复: 15
收起左侧

[HELP] CI避免客户多次点击后反复发同样邮件

  [复制链接]
发表于 2011-6-17 14:35:24 | 显示全部楼层 |阅读模式
用远端smtp发邮件,有时连接到远程服务器会慢,但客户会不断点提交形成发出同样邮件N封,有什么办法避免别人反复点提交吗?另外表格内有验证输入的内容
发表于 2011-6-17 15:57:55 | 显示全部楼层
本帖最后由 jeongee 于 2011-6-17 15:58 编辑

用ajax吧,提交完了把表单隐藏,然后给个发送中...,然后成功就提示成功,并把表单remove掉,失败了就显示失败,在把表单显示出来,重新发送
发表于 2011-6-17 16:07:05 | 显示全部楼层
更简单的一个方法就是js,点击submit后把submit的属性改成disable
 楼主| 发表于 2011-6-17 16:12:28 | 显示全部楼层
本帖最后由 smartweb 于 2011-6-17 16:14 编辑

不能加,我还要验证输入的字段,例如姓名,地址不能为空,email必须是有效的。感觉AJax也不太现实。人家是在发邮件的过程中,连到远程服务器有时慢,在中间时段,别人狂点。我加了captcha有所好转了,但狂点后发送完成是只发一次,但仍停留在原页面说验证码错。
发表于 2011-6-17 16:23:05 | 显示全部楼层
你不就是个邮件发送页面麽,提交控制器验证表单,通过就发送跳转成功页面,失败返回发送页面修改,是这样么?
 楼主| 发表于 2011-6-17 16:30:34 | 显示全部楼层
发送邮件时在同样的页面验证数据,有错误就在当前页面即时显示出来,没错误就发送。发送完成就调用另一个view显示成功发送,并不是转向。
重点是:在发送过程中有时间间隔,就是怕别人在这个间隔中狂点。
发表于 2011-6-17 16:36:29 | 显示全部楼层
你的验证是在当前页面用js验证还是在控制器里用form_validation验证
不管是那种,都可以用js控制你表单的submit的disable属性来达到你的要求啊.
 楼主| 发表于 2011-6-17 16:37:46 | 显示全部楼层
我全部用form_validation验证
请写上submit disable给我参考一下。谢谢
发表于 2011-6-17 16:44:54 | 显示全部楼层
<script>
        function onsub(){
                $('#sub').attr("disabled",true); ;
        }
        </script>
        <input id="sub" type="submit" onclick="onsub()" value="test" />

如果验证不通过返回这个页面的时候 submit按钮还是会变成可以点击的,因为你页面已经重载了
发表于 2011-6-17 17:10:15 | 显示全部楼层
使用ajax会影响到表单验证吗?我觉得不会啊

本版积分规则