DEDECMS自定义表单页提交后停留在当前页
dedecms更新主页后显示404界面

dedecms更新主页后显⽰404界⾯
在后台⽣成静态页⾯可以正常浏览,但是如果换成动态浏览就不能浏览。
经过研究发现有2个问题:
1、后台⽣成⾸页html⽂件的时候,提⽰404.html错误,直接访问⽹站⾸页会⾃动跳转到404.html,同时提⽰⽂件不存在的错误。
解决⽅法:登录后台----模板----标签源码管理---编辑 flinktype.lib.php----
找到这⼀段代码:
$dedecms = false;
$dedecms->id = 999;
$dedecms->typename = '织梦链';
if($type == 'fdeer') $row[] = $dedecms;
把红⾊的部分改掉,随便修改成任意字符。
如:
if($type == 'fdeer') $row[] = $dedecms;
2、后台⽣成⾸页html⽂件的时候,没有错误,直接访问⽹站⾸页会⾃动跳转到404.html。
解决办法:将最新版的dedecms对应版本的安装包中的index.php上传到根⽬录即可。
解决表单多次submit

在java web工程中,当jsp向Servlet提交请求时,如何防止刷新提交(F5)?可以使用的方法有,在jsp中定义一个变量值,这个变量值应该是唯一的,可以使用算法来保证生成数据的唯一性,例如hash算法,或者生成一个随机数(Random),并将这个数值保存到一个Set中,并将Set保存在session中,提交Servlet时将这个参数传递过去,在Servlet中的处理:接到参数和session中的set后,判断set中有没有传来的参数值,如果没有则页面是刷新造成的,并不是来自页面的提交,这时不做insert data的处理。
jsp代码:<%//生成一个formhash,算法可以自己定,不随便重复就可以了Random ran = new Random();String formhash = String.valueOf(ran.nextInt());//读取当前session里面的hashCode集合,此处使用了Set,方便判断。
Set<String> formhashSession = (Set<String>)session.getAttribute("formhashSession");if (formhashSession == null) {formhashSession = new HashSet<String>();}// 检测重复问题while (formhashSession.contains(formhash)) {formhash = String.valueOf(ran.nextInt());}// 保存到session里面formhashSession.add(formhash);// 保存session.setAttribute("formhashSession", formhashSession);%><form>中增加:<input type="hidden" name="formhash" id="formhash"value="<%=formhash%>" />Servlet代码:// 拿到表单的formhashString formhash = request.getParameter("formhash");// 拿到session里面的集合Set<String> formhashSession = (Set<String>)session.getAttribute("formhashSession");// 如果没有,则是重复提交,或者非法提交if (formhashSession == null || !formhashSession.contains(formhash)) { System.out.println("重复提交!");}else{//正常的操作}// 最后,如果操作成功,从session里面把这个formhash 删掉!formhashSession.remove(formhash);session.setAttribute("formhashSession", formhashSession);参考文章:/java2000_net/archive/2008/02/25/2119298.aspx 第二种解决方法,参考struts的token(令牌)机制:在提交的时候在Servlet中根据用户的sessionid和当前时间的long值生成一个令牌(每次提交都会生成一个新令牌),将令牌保存在该用户的会话中,并将令牌的值以request属性形式传到前端页面,在前端页面的form中增加传递令牌的隐藏域<input type="hidden" name="clientToken" value="<%=clientToken%>" />,提交form的时候,也会将clientToken传入Servlet,如果session中保存的令牌值与传入的不同,则是重复提交,因为每次请求Servlet都会生成新的令牌,刷新时的令牌值是旧的令牌值,不是最新的令牌值。
PhpcmsV9单页添加自定义字段

PhpcmsV9单页添加⾃定义字段说起⽂章⾃定义⾃段,⼤家都会想到 wordpress 的⾃定义字段,确实 wordpress 系统很强⼤,字段可以很灵活的在后台进⾏添加与更新,并能够很好的在前台进⾏调⽤,对于这点 phpcms v9 就有点弱爆了,phpcms v9 是没有⾃定义字段这个功能的,只能要我们来进⾏⼆次开发。
phpcms v9 ⽂章内容的添加与更新选项已经很多了,基本上趋于完善,⽽关于 phpcms v9 单页 page就显得很简单,使⽤的字段只有三个:标题、关键词、内容,这往往不够使⽤,有时候需要添加更多的选项,⽐如图⽚,或者⽂字描述等,下⾯夏⽇博客主要为⼤家讲下 phpcms v9如何为单页添加⾃定义字段。
1、给单页 page ⾃定义摘要第⼀步,打开数据库,找到 v9_page 数据表添加⼀个 description 字段,字段类型为 varchar,长度为 255即可。
第⼆步,打开 phpcms\modules\content\templates\content_page.tpl.php ⽂件,并到到如下代码:<tr><th width="80"> <?php echo L('content');?></th><td>//上⽅添加:<tr><th width="80">内容简介</th><td><textarea type="text" name="info[description]"style='width:98%;height:46px;'><?php echo $description?></textarea>只可输⼊<B><span id="description_len">255</span></B> 个字符 </td></tr>更改完成之后,我们还需要更新⼀下后台缓存,然后进⾏某⼀个单页的编辑,这个时候就会有⽂章摘要的字段了,前台只需要进⾏调⽤{$description} 就可以了。
submit()方法

submit()方法submit()方法是JavaScript中常用的表单相关方法之一,它允许我们在表单中填写完必要的信息后,点击提交按钮进行信息的提交。
在本篇文章中,我们将分步骤阐述submit()方法的使用,帮助大家更好地理解这一方法。
步骤一、获取表单元素在使用submit()方法进行提交时,我们首先需要获取表单元素。
通常可以使用document.getElementById()方法根据id获取到表单元素,如下所示:```javascriptvar form = document.getElementById("myForm");```在这里,我们获取了一个id为“myForm”的表单元素,并将其赋值给变量form。
步骤二、阻止表单自动提交默认情况下,当用户点击表单的提交按钮时,表单会自动提交。
但是,在我们使用JavaScript的submit()方法时,我们需要阻止表单自动提交的行为,以便我们可以在提交前进行一些操作。
例如,在提交前验证表单数据是否正确,或者将表单数据发送给服务器进行处理。
为了阻止表单自动提交,我们可以使用preventDefault()方法,代码如下:```javascriptdocument.getElementById("submitBtn").addEventListener("click", function(e) {e.preventDefault();// do something});```这里,我们使用addEventListener()方法来对表单中的提交按钮添加了一个点击事件监听器,阻止了默认的表单提交事件,让我们可以在提交前进行一些自定义操作。
如果不阻止这个默认事件,你将很难通过JavaScript修改表单数据或在提交前验证。
步骤三、使用submit()方法进行表单提交在对表单进行完自定义操作之后,我们可以使用submit()方法来进行表单提交,如下所示:```javascriptform.submit();```这里,我们调用了form.submit()方法来提交表单。
织梦系统(dede)标签使用及问题解决方法总结

织梦cms(dede)标签使用及问题解决方法总结longyamiao 以前使用过织梦cms(dede)进行网站建设,最近又一次做网站,在制作过程中遇到一些问题,现将标签使用解决方法总结一下。
一、dede 我的文档及收藏方面处理方法——longyamiao问题一:我的文档里有已通过、待审核、未通过三种情况。
而在点击时不是以滑动门的方式显示,而是重新加载网页。
无法达到更改已通过、待审核、未通过三处样式的目的。
问题二:当点击我的文档打开网页时,网页显示的是我所有文档,当点击已通过时,网页显示的是我的已通过审核的文档,当点击下一页查看时发现未通过的文章显示出来了。
解决:(一)点击时每次重新加载,解决方法是,一个模板复制三次,分别命名。
在模板里改变点击已通过待审核未通过的地址。
PHP 和HTM 模板分别是Default/member/myupload.phpDefault/member/templets/myupload.htm 更改PHP里打开模板的链接更改HTM模板里打开PHP的链接。
(二)在myupload.php里用$arcrank表示已通过待审核未通过分别值为1 -1 -2。
点击下一页出现故障的原因是,在分页时,分页链接查询数据库没有加入arcrank参数的限制条件。
分页样式及代码在Default/include/datalistcp.class.php中分布链接地址为$purl .= "?".$geturl; 在这里如果直接添加arcrank 变成$purl .= "?arcrank=1&".$geturl; 在已通过页面里能看到是正常的,但由于是常量,不能变化,在待审核和未通过里则显示错误,同时在我的收藏里也显示错误。
所以没有考虑像第一步那样复制成多份模板,而是想办法传递参数。
可我看代码myupload.php 没有给datalistcp.class.php传递参数。
实现页面跳转的方法

实现页面跳转的方法
1. 直接点击链接跳转呀,这就像你在路上看到一个指向目的地的箭头,你直接跟着走就到啦!比如你在网页上看到“点击这里进入下一页”,那你就大胆点下去呀!
2. 使用按钮呢,就像你按下电梯的楼层按钮,“嗖”的一下就到啦!比如说“确定”按钮,一点它,页面就切换啦。
3. 通过表单提交来跳转,哇塞,这就好像你递上一张入场券,然后顺利进入新的场地!像填完注册表单提交后进入个人主页。
4. 利用脚本触发跳转哦,嘿,这就如同有个小精灵在幕后悄悄操作,突然就变了场景!比如说页面加载完后自动跳转到另一个页面。
5. 还有跟着导航栏跳转呀,这可不就是像你在商场里跟着指示牌找到你想去的地方嘛!像点击导航栏上的“产品介绍”就跳到相关页面了。
6. 利用搜索功能跳转呀,哇哦,这多像你说出一个关键词,立马就被带到有相关信息的地方!比如搜索一个商品后跳转到商品详情页。
7. 可以根据页面的状态变化来跳转呢,哎呀,就像天气突然变化了你得赶紧换衣服一样!比如完成某个任务后页面切换。
8. 通过二维码扫描跳转呢,嘿呀,这不就是打开一扇神秘的门嘛!扫一下二维码马上进入对应的页面。
9. 还有依靠外部链接来跳转哟,哇,就像是从一个世界进入另一个世界!比如点击其他网站上的链接跳转到你的页面。
我觉得这些方法都超有趣呀,让我们在互联网的世界里来去自如,真是太棒啦!。
web页面后退,保留form表单中的值
web页⾯后退,保留form表单中的值
当在页⾯A的表单中填⼊数据,通过页⾯跳转(如a 标签)到B页⾯,然后再后退到A页⾯(⽤js实现的⽅法包含:history.go(-1)和history.back()),浏览器会⾃动保存A页⾯表单中的数据。
然⽽我的项⽬前端使⽤的是QUI,回退的时候发现数据竟然清空了。
我的思路就是:QUI中form的⽗级标签影响了表单的缓存。
操作步骤如下:
1.将表单放在最外层中,结果是可以缓存表单数据的。
2.经过层层筛选,锁定layout布局影响到了表单。
果不其然,就是如下这段代码:
分析:此代码是页⾯整体左右布局操作,⽆法找到⼀个合适的替代布局;此项⽬已经上线,牵⼀发⽽动全⾝,⽆法重新布局;表单中存在⾮表单控件的查询(QUI中的风中的div,如suggest),即使规避了layout,也⽆法⼀劳永逸。
结果:要想解决此问题,只能另辟蹊径,选择传值的⽅法。
阻止表单提交的方法
阻止表单提交的方法标题:阻止表单提交的方法正文:表单提交是一种常见的Web功能,可以让用户通过表单填写信息并提交表单以创建或更新数据。
然而,有时我们不希望表单被提交,例如当我们不希望用户输入敏感信息或当我们正在执行某些特殊操作时。
以下是一些阻止表单提交的方法:1. 阻止表单的默认行为:我们可以在HTML表单标签中设置`type="button"`属性,这将阻止表单默认的提交行为。
这将确保表单只向服务器提交表单数据,而不会将用户输入直接发送到服务器。
2. 禁用表单的提交按钮:我们可以在HTML表单元素中添加一个`<input type="submit"`元素,来禁用表单的提交按钮。
这将阻止用户点击提交按钮,但用户仍然可以使用其他方式提交表单数据。
3. 使用JavaScript阻止表单提交:我们可以使用JavaScript代码来阻止表单的提交。
例如,我们可以在JavaScript代码中阻止用户在点击提交按钮时执行任何操作,从而阻止表单提交。
4. 使用服务器端脚本阻止表单提交:我们可以使用服务器端脚本来阻止表单的提交。
例如,我们可以在服务器端编写JavaScript代码,检查表单数据是否符合某些限制条件,然后阻止表单提交。
5. 使用Web表单验证插件:许多Web表单验证插件可以检查表单数据是否符合某些限制条件,并阻止表单提交。
这些插件通常可以在Web浏览器中安装,并可以与JavaScript代码配合使用,实现更好的表单安全性。
这些方法可以根据具体需求和场景选择其中之一。
需要注意的是,在某些情况下,阻止表单提交可能不是最佳解决方案,例如当表单数据需要实时更新时,应该考虑使用表单数据传递机制。
表单重复提交解决方案
表单重复提交解决方案在日常工作和生活中,我们经常会遇到需要填写表单的情况,比如注册账号、提交订单、参加活动等。
然而,有时候我们会不小心多次提交相同的表单,这就会导致数据混乱、系统错误甚至资源浪费。
为了解决这一问题,我们需要采取一些有效的措施来防止表单重复提交,下面将介绍一些解决方案。
首先,我们可以通过前端技术来防止表单重复提交。
在用户提交表单后,可以使用JavaScript禁用提交按钮或者隐藏表单,以防止用户多次点击提交按钮。
此外,还可以在表单提交后立即清空表单数据,以防止用户再次提交相同的内容。
这样一来,即使用户多次点击提交按钮,也不会导致表单重复提交的问题。
其次,后端也可以采取一些措施来防止表单重复提交。
在接收到表单提交请求后,可以先检查数据库中是否已经存在相同的数据,如果存在则直接返回错误信息,不执行后续的数据处理操作。
另外,可以在后端代码中设置一个标识,用于标记每次表单提交的唯一性,比如可以使用token或者session来标识每次提交的表单数据,如果检测到重复的token或session,则直接拒绝处理该请求。
此外,还可以通过网络层面的控制来防止表单重复提交。
比如可以在服务器端设置请求的超时时间,如果在规定的时间内收到重复的请求,则直接拒绝处理。
另外,还可以在网络层面对重复的请求进行去重处理,以确保每个请求只被处理一次。
总的来说,防止表单重复提交是一个涉及前端、后端和网络层面的综合性问题。
我们可以通过前端禁用提交按钮、后端检查数据唯一性和网络层面的请求控制来有效地解决这一问题。
希望以上解决方案可以帮助大家更好地处理表单重复提交的情况,提高工作效率和数据准确性。
Form表单,4种常见的表单提交方式
协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后 发送的 HTTP 请求满足上面的格式就可以。
但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据 请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
6
7 title
8 ------WebKitFormBoundaryrGKCBY7qhFd3TrwA 910CCoonntteenntt--DTyisppeo:siimtioang:ef/oprnmg-data; name="file"; filename="chrome.png"
11PNG ... content of chrome.png ... 12------WebKitFormBoundaryrGKCBY7qhFd3TrwA-13
所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Dedecms自定义表单页提交后停留在当前页
我们使用织梦dedecms建站的时候会做一些报名、留言本等等一些表单页,但是默认表单页
提交后会跳转到首页,对用户体验不太好,就需要我们修改了:
dedecms自定义表单,点击提交后,默认跳转到首页,我们打开plus/diy.php,里面有这样一
段代码:
复制代码
代码如下:
if($dsql->executenonequery($query))
{
$id=$dsql->GetLastID();
if($diy->public==2)
{
//diy.php?action=view&diyid={$diy->diyid}&id=$id
$goto="diy.php?action=list&diyid={$diy->diyid}";
$bkmsg='发布成功,现在转向表单列表页…';
}
else
{
$goto=!emptyempty($cfg_cmspath)?$cfg_cmspath:'/';
$bkmsg='发布成功,请等待管理员处理…';
}
showmsg($bkmsg,$goto);
}
找到这一行:
复制代码
代码如下:
$goto=!empty($cfg_cmspath)?$cfg_cmspath:'/';
就是跳转到首页的意思了。我们修改一下,比如:
$goto="/abc.htm"
由于word文档再编辑的时候可能造成英文中文符号混淆,看不清页面可以找procui.com
工具网站搜索文档标题找到原文也可行
就可以跳转到你想要的页面了,如果想跳转到当前页面的话:
复制代码
代码如下:
if($dsql->executenonequery($query))
{
$id=$dsql->GetLastID();
if($diy->public==2)
{
//diy.php?action=view&diyid={$diy->diyid}&id=$id
$goto="diy.php?action=list&diyid={$diy->diyid}";
$bkmsg='发布成功,现在转向表单列表页…';
echo"";
}
else
{
$goto=!emptyempty($cfg_cmspath)?$cfg_cmspath:'/';
$bkmsg='发布成功,请等待管理员处理…';
}
showmsg($bkmsg,$goto);
由于word文档再编辑的时候可能造成英文中文符号混淆,看不清页面可以找procui.com