A-A+

discuz从X3.5升级到X5.0后发帖无反应,查看控制台显示提示“抱歉,您的请求来路不正确或表单验证串不符,无法提交”

2026年09月01日 网络安全相关 暂无评论 阅读 23 views 次

刚升级了discuz论坛程序。过程还算顺利,帖子和会员数据正常,注册正常,

但发新帖和回复时点击提交无反应,查看控制台后可以看到提示

bbs/forum.php?mod=post&action=newthread&fid=27&extra=&topicsubmit=yes&inajax=1 503 (Service Temporarily Unavailable)

右键新标签打开后看到

提示“抱歉,您的请求来路不正确或表单验证串不符,无法提交”

尝试了后台的

更新统计,

然后跟新缓存,故障依旧。

按照网上找到的故障修复说明https://www.cnblogs.com/chongyou/p/5950127.html

出现 “抱歉,您的请求来路不正确或表单验证串不符,无法提交” 这种问题的地方都是在提交表单的时候出现的。

因为discuz 在提交表单的时候 会进行校验,submitcheck()函数,这个函数首先会校验表单中的formhash,如果formhash出现问题,那么就会出现“抱歉,您的请求来路不正确或表单验证串不符,无法提交” 这种问题。

submitcheck()这个函数 放在 source\class\helper\helper_form.php 中。

解决方法:

第一种方法:

请检查你本地的时间是否和服务器的时间一致。如果不一致请同步时间,更新缓存。---这个要设置下

第二种方法:

请检查你提交的表单中,是否有<input type="hidden" name="formhash" value="{$formhash}">,如果没有请手动添加上去。(这种情况一般会在IE6上面出现,其他浏览器正常。)

第三种方法:

打开“source\class\helper\helper_form.php”, 然后把“$_GET['formhash'] == formhash() ”修改为“$_G['formhash'] == formhash() ”。

第四种方法

在提交的动作控制器中,去掉submitcheck()验证。 (此种方法需要对discuz的核心比较熟悉。)比如,在注册的时候,你需要找到“source\class\class_member.php”文件中register_ctl类中的on_register()方法,在if(!submitcheck('regsubmit', 0, $seccodecheck, $secqaacheck)) { }处,可以把submitcheck()换成if(isset($_POST)){ } .虽然不安全,但是也是一种解决方法。---这个方法才解决我的问题

第五种方法:

重装disucz…  ----这个才治根


上面的方法对故障修复依然无效。

尝试找到了此错误提示的函数submit_invalid,对多个文件修改进行屏蔽注释,依然无效。


发现应是pre_forum_post中的数据问题。清空此数据表发帖就正常了。


但对比数据结构,没发现异常,内容则正常的可发帖字段:

content字段内容 '{"type": "", "editor": "", "extend": [], "content": "{}"}'

source字段内容 '{}'

 升级后无法发布新帖子的这2个字段内容为NULL


但替换后依然发贴错误,仍在摸索中。。。


问题好像解决了,需要操作PHPMYADMIN登录数据库管理,将老数据库中的pre_forum_post_tableid表重新覆盖下。

标签:

给我留言

您必须 登录 才能发表留言!

Copyright © rjzb软件智博 保留所有权利.   Theme  Ality Power by serv00.com host,thanks.

用户登录