自留地
切勿乱来!
     找回密码

PHPCMS V9最完整的兼容https修改方案 涉及后台内容管理和分页

#PHPCMS专题

因历史原因PHPCMCSV9并不支持https,而且网上的修改教程都不是太完整,所以我发出我整理出来的修改教程供大家参考

https修改教程

/phpcms/modules/admin/site.php

45行,128行

/phpcms/modules/admin/templates/category_add.tpl.php
/phpcms/modules/admin/templates/category_edit.tpl.php

11行

/phpcms/modules/admin/templates/site_add.tpl.php

13行

/phpcms/modules/admin/templates/site_edit.tpl.php
11行

/phpsso_server/phpcms/modules/admin/templates/applications_add.tpl.php
/phpsso_server/phpcms/modules/admin/templates/applications_edit.tpl.php
14行

找到下面代码:

http:\/\/(.+)\/$

改成

^(http(s)?:)?\/\/(.+)\/$

基本配置的phpcms/modules/admin/templates/setting.tpl.php

http:\/\/(.+)[^/]$

改成

^(http(s)?:)?\/\/(.+)[^/]$

友链模块的
phpcms/modules/link/templates/link_add.tpl.php和link_edit.tpl.php找到

^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&]*([^<>])*$

改成

^(http(s)?:)?\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&]*([^<>])*$

扩展-来源的phpcms/modules/admin/templates/copyfrom_add.tpl.php和copyfrom_edit.tpl.php找到

^http://

改成

^(http(s)?:)?\/\/(.+)\/$

扩展-关联链接的phpcms/modules/admin/templates/keylink_add.tpl.php和keylink_edit.tpl.php找到

^http:

改成

^http(s)?:\/\/

以上为前端修改

通信及后台部分修改

后台内容列表,这部分很重要,牵扯到整个后台的分页,不仅限于内容分页

phpcms/modules/content/templates/content_list.tpl.php
97行找到

} elseif(strpos($r['url'],'http://')!==false) {

改成

} elseif(preg_match('/^(http(s)?:)?\/\//', $r['url'])) {

后台分页,这部分很重要,牵扯到内容管理里的标题超链打开地址

phpcms/libs/functions/global.func.php
找到pageurl函数,没修改过的在784行,里面找到

$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);

改成

$url = preg_replace(array('/^((\w+):)?\/\//', '/\/{2,}/', '/~/'), array('$1~', '/', '//'), $url);

/phpsso_server/api/uc_client/client.php找到

$port = !empty($matches['port']) ? $matches['port'] : 80;

改成

$port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme'] == 'https' ? 443 : 80);

/phpsso_server/api/uc_client/model/misc.php找到

$port = !empty($matches['port']) ? $matches['port'] : 80;

改成

$port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme'] == 'https' ? 443 : 80);

/phpcms/libs/classes/http.class.php找到

$port = $matches['port'] ? $matches['port'] : 80;

改成

$port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme']=='https' ? 443 : 80);
$protocol = ('https' == $matches['scheme']) ? 'ssl://' : '';

找到

$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);

改成

$fp = @fsockopen($protocol.$host, $port, $errno, $errstr, $timeout);

phpsso_server/phpcms/libs/classes/http.class.php找到

$port = $matches['port'] ? $matches['port'] : 80;

改成

$port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme']=='https' ? 443 : 80);
$protocol = ('https' == $matches['scheme']) ? 'ssl://' : '';

phpcms/modules/member/classes/client.class.php里找到_ps_post函数,里面的

$port = !empty($matches['port']) ? $matches['port'] : 80;

改成

$port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme']=='https' ? 443 : 80);

通过以上修改,基本解决了PHPCMCSV9兼容https的问题,至于为什么说基本,因为这里也有可能我尚未发现的地方,如果有可以在评论区告知一下,我更新上来

13 收藏 打赏
×
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《PHPCMS V9最完整的兼容https修改方案 涉及后台内容管理和分页》
文章链接:https://www.ediok.cn/blog/2020/09/4937.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

评论 抢沙发

评论前必须登录!

 

关注互联网发展前沿,关注PHPCMS技术演进,钻研PHPCMS技术开发

问答社区 联系我们

登录

登录即表示同意本站用户协议隐私政策
©2026 周涛博客 All rights reserved

注册

注册即表示同意本站用户协议隐私政策
©2026 周涛博客 All rights reserved

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

微信扫一扫

微信扫一扫