在discuz提交表單的時(shí)候提示:抱歉,您的請求來路不正確或表單驗(yàn)證串不符,無法提交。導(dǎo)致數(shù)據(jù)無法提交。
原因分析:
因?yàn)閐iscuz 在提交表單的時(shí)候 會進(jìn)行校驗(yàn),submitcheck()函數(shù),這個(gè)函數(shù)首先會校驗(yàn)表單中的formhash,如果formhash出現(xiàn)問題,那么就會出現(xiàn)“抱歉,您的請求來路不正確或表單驗(yàn)證串不符,無法提交” 這種問題。
解決方法:
檢查提交的表單中,是否有,如果沒有手動添加上去。如果已經(jīng)有了,查看下value的值是否為空,如果為空,在對應(yīng)的PHP文件加入一段PHP代碼:$formhash=FORMHASH;
PHP二次開發(fā)通過以上方法解決,看網(wǎng)上可能還有別的原因?qū)е?,可以參考下下面的解決辦法:
方法一:請檢查你本地的時(shí)間是否和服務(wù)器的時(shí)間一致。如果不一致請同步時(shí)間,更新緩存。
方法二:打開“source/class/helper/helper_form.php”, 然后把“$_GET['formhash'] == formhash() ”修改為“$_G['formhash'] == formhash() ”。
方法三:在提交的動作控制器中,去掉submitcheck()驗(yàn)證。 (此種方法需要對discuz的核心比較熟悉。)比如,在注冊的時(shí)候,你需要找到“source/class/class_member.php”文件中register_ctl類中的on_register()方法,在if(!submitcheck('regsubmit', 0, $seccodecheck, $secqaacheck)) { }處,可以把submitcheck()換成if(isset($_POST)){ } .雖然不安全,但是也是一種解決方法。
方法四:重裝discuz。
注意:不建議采用方法三,本驗(yàn)證就是為了防止非法提交數(shù)據(jù),取消驗(yàn)證就失去了這個(gè)意義。