杰奇2.4配置https导致表单提交无效

自从杰奇2.4版本流出之后,看得出来越来越多的人都用上了,这也让规则之树有了更多水文章的机会。目前来说,配置ssl是网站比较主流的策略,因为许多浏览器对未配置ssl的网站都会出现不安全的提示,之前我就写过一篇杰奇cms全站https教程,及注意要点,而且在最近的安装配置中,也使用了那个时候的基本套路。
timg.jpg
但是,却出现了一个神奇的问题。
首先是前台的登陆注册,包括所有的表单提交全部都在配置完https后失效,其次是后台也进不去了,每个表单都是提交后刷新了一遍,然后就没有然后了。为了解决这个问题,我先后检查了程序,证书也进行了更换,但还是一样,直到浏览器右键查看了源码。

所有的表单action路径都还是http,因为加了强制https,所以提交就基本等于刷新当前页面

这个地方我真心研究了老半天,解决方案是找到了,但是出现问题的缘由还是要讲解一下。

解密global.php,找到2298行,可以看到这样的代码:

if ($_SERVER['HTTP_HOST'] == '' && JIEQI_URL != '') {
    define('JIEQI_LOCAL_HOST', str_replace(array('http://', 'https://'), '', JIEQI_URL));
}
else {
    define('JIEQI_LOCAL_HOST', $_SERVER['HTTP_HOST']);
}

大概含义是,判断如果页面不是通过http形式访问,并且JIEQI_URL的值不等于空,网站内地址就讲http替换为https,否则就直接显示http网址。根据这个代码,就可以推断出问题的缘由,至于JIEQI_URL这个字段的值在哪里定义,答案也很显然了,就在configs/define.php,也就是最顶部的一句,所以直接就把原本是空的这一个字段,直接改成如下就好了。

@define('JIEQI_URL','https://你的域名');

这样之后,杰奇里那些表单就会更新为https的链接了。

最后总结:

其实杰奇2.4以下的版本里面,JIEQI_URL是和授权密切相关的必填项,而到了这个版本,就可以留空了,或许也正是因为2.4是一个中间版本的缘故(目前杰奇最新版是3.1),导致一些判断可能没有顾忌太多,比较这个问题在杰奇3.0开始,就不会出现了,我玩过的杰奇3.0这里是可以留空并且依然配置https的。

规则之树版权所有,转载请注明来源,标明作者及原文链接

发表评论
加载中...
    1.   2019-08-15 18:16

      啊哈哈哈哈还困扰了我三天的问题mmp

相关文章