DEDE,防止form被无限提交信息?

我用的是DEDE,自定义表单开发出网站最核心功能。现在有人利用我的自定义表单来无限提交申请(应该是通过action地址),导致后台删不完的无效信息。

阿波罗的战车
浏览 444回答 3
3回答

largeQ

有如下几个建议,把下拉框和单选按扭在后台做成单行文本,这样的话不管你提交的是下拉框或是单选,都可以有效的接收它的值。如果后台就做成单选或下拉,如果改了默认值,提交的表单值跟后台默认值对不上的话就会出现提交不成功的情况,就是前台提交的时候选择了,但后台看不到数据。若是做成单行文本,提交的值就会以文本的形式写入到后台,表单修改值也更加显得方便了。&nbsp;提交之后会显示织梦的默认提示信息“友情提示”几秒过后就自动转到首页。如何才能让提交的信息停留,并让用户确认所提交的信息。&nbsp;我想了如下方式。给diy.php里提交成功后输入固定值而不是自带的跳转方法。如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113if($action&nbsp;==&nbsp;'post'){&nbsp;if(empty($do))&nbsp;{&nbsp;&nbsp;$postform&nbsp;=&nbsp;$diy->getForm(true);&nbsp;&nbsp;include&nbsp;DEDEROOT."/templets/plus/{$diy->postTemplate}";&nbsp;&nbsp;exit();&nbsp;}&nbsp;elseif($do&nbsp;==&nbsp;2)&nbsp;{&nbsp;&nbsp;$dede_fields&nbsp;=&nbsp;empty($dede_fields)&nbsp;?&nbsp;''&nbsp;:&nbsp;trim($dede_fields);&nbsp;&nbsp;$dede_fieldshash&nbsp;=&nbsp;empty($dede_fieldshash)&nbsp;?&nbsp;''&nbsp;:&nbsp;trim($dede_fieldshash);&nbsp;&nbsp;if(!empty($dede_fields))&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;if($dede_fieldshash&nbsp;!=&nbsp;md5($dede_fields.$cfg_cookie_encode))&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;showMsg('数据校验不对,程序返回',&nbsp;'-1');&nbsp;&nbsp;&nbsp;&nbsp;exit();&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}&nbsp;&nbsp;$diyform&nbsp;=&nbsp;$dsql->getOne("select&nbsp;*&nbsp;from&nbsp;osen_diyforms&nbsp;where&nbsp;diyid='$diyid'&nbsp;");&nbsp;&nbsp;if(!is_array($diyform))&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;showmsg('自定义表单不存在',&nbsp;'-1');&nbsp;&nbsp;&nbsp;exit();&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;$addvar&nbsp;=&nbsp;$addvalue&nbsp;=&nbsp;'';&nbsp;&nbsp;&nbsp;&nbsp;if(!empty($dede_fields))&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fieldarr&nbsp;=&nbsp;explode(';',&nbsp;$dede_fields);&nbsp;&nbsp;&nbsp;if(is_array($fieldarr))&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;foreach($fieldarr&nbsp;as&nbsp;$field)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($field&nbsp;==&nbsp;'')&nbsp;continue;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fieldinfo&nbsp;=&nbsp;explode(',',&nbsp;$field);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($fieldinfo[1]&nbsp;==&nbsp;'textdata')&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${$fieldinfo[0]}&nbsp;=&nbsp;FilterSearch(stripslashes(${$fieldinfo[0]}));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${$fieldinfo[0]}&nbsp;=&nbsp;addslashes(${$fieldinfo[0]});&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${$fieldinfo[0]}&nbsp;=&nbsp;GetFieldValue(${$fieldinfo[0]},&nbsp;$fieldinfo[1],0,'add','','diy',&nbsp;$fieldinfo[0]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$addvar&nbsp;.=&nbsp;',&nbsp;`'.$fieldinfo[0].'`';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$addvalue&nbsp;.=&nbsp;",&nbsp;'".${$fieldinfo[0]}."'";&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;$query&nbsp;=&nbsp;"insert&nbsp;into&nbsp;`{$diy->table}`&nbsp;(`id`,&nbsp;`ifcheck`&nbsp;$addvar)&nbsp;&nbsp;values&nbsp;(NULL,&nbsp;0&nbsp;$addvalue);&nbsp;";&nbsp;&nbsp;&nbsp;&nbsp;if($dsql->executenonequery($query))&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;$id&nbsp;=&nbsp;$dsql->GetLastID();&nbsp;&nbsp;&nbsp;if($diy->public&nbsp;==&nbsp;2)&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//diy.php?action=view&diyid={$diy->diyid}&id=$id&nbsp;&nbsp;&nbsp;&nbsp;$goto&nbsp;=&nbsp;"diy.php?action=list&diyid={$diy->diyid}";&nbsp;&nbsp;&nbsp;&nbsp;$bkmsg&nbsp;=&nbsp;'发布成功,现在转向表单列表页...';&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;$goto&nbsp;=&nbsp;!empty($cfg_cmspath)&nbsp;?&nbsp;$cfg_cmspath&nbsp;:&nbsp;'/';&nbsp;&nbsp;&nbsp;&nbsp;$bkmsg&nbsp;=&nbsp;'发布成功,请等待管理员处理...';&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;echo&nbsp;'<!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html&nbsp;xmlns="http://www.w3.org/1999/xhtml"><head><meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&nbsp;/><title>订单核对&nbsp;</title><link&nbsp;href="/img_cnosn/css_end.css"&nbsp;rel="stylesheet"&nbsp;type="text/css"&nbsp;/></head>&nbsp;&nbsp;<body><div&nbsp;id="ctent"><h1>您已成功提交订单,请仔细核对你的信息!</h1><ul><script&nbsp;language="javascript">&nbsp;function&nbsp;ReplaceAll(str,sptr,sptr1)&nbsp;{&nbsp;&nbsp;while&nbsp;(str.indexOf(sptr)&nbsp;>=&nbsp;0)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str.replace(sptr,&nbsp;sptr1);&nbsp;&nbsp;}&nbsp;&nbsp;return&nbsp;str;&nbsp;}&nbsp;&nbsp;&nbsp;descria=",您的姓名:,联系电话:,送货地址:,购买产品:,支付方式:,订货留言:,b";&nbsp;var&nbsp;descri=new&nbsp;Array();&nbsp;descri=descria.split(",");&nbsp;str=&nbsp;"'.$addvalue.'"&nbsp;;&nbsp;str=ReplaceAll(str,"\'","");&nbsp;var&nbsp;strarray=new&nbsp;&nbsp;&nbsp;Array();&nbsp;strarray=str.split(",")&nbsp;;&nbsp;for(i=0;i<7;i++){&nbsp;document.write("<li>"+descri[i]+strarray[i]+"</li>");&nbsp;}</script></ul><div&nbsp;class="info">友情提示:您的订单已提交成功,我们的客服会尽快与你取得联系&nbsp;<a&nbsp;href="#"&nbsp;onclick="window.operner&nbsp;=&nbsp;null;window.open(\'\',\'_self\');window.close();">确认并关闭</a>&nbsp;或&nbsp;<a&nbsp;href="#"&nbsp;onclick="window.operner&nbsp;=&nbsp;null;window.open(\'\',\'_self\');window.close();">返回修改</a></div></div></body></html>';&nbsp;&nbsp;}&nbsp;}}&nbsp;以上是代码。这样就是固定提取前几个表单信息给用户确认,不过在后台增加表单的时候一定要统一按以上数组的顺序进行添加字段。这样才能对应。有一个不好的地方是,这个文件只要一改就是针对所有的表单提交,不过这只是一个方法,供参考,最终还得灵活应用。

慕神8447489

12345{dede:sql&nbsp;sql="select&nbsp;sum(*)&nbsp;as&nbsp;s&nbsp;from&nbsp;dede_diyform1"}[field:s&nbsp;/]{/dede:sql}&nbsp;<!--dede_diyform1换成你的自定义表单存储的表名。->
打开App,查看更多内容
随时随地看视频慕课网APP