最新公告
  • 欢迎光临智久久资源分享站,优质软件分享、网站模板源码下载。 欢迎加入VIP 返回旧版
  • 帝国ccms7.5在php7下需要改进的地方

    正文概述    2022-04-13 14:57:30  
    1. 如何方便的在php7和其他版主中自由的切换帝国cms

     

    //数据库设置

    $ecms_config['db']['usedb']='mysql';    //数据库类型

    if(PHP_VERSION>6.9)$ecms_config['db']['usedb']='mysqli';

    或者 两句合并成一句

    $ecms_config['db']['usedb']=PHP_VERSION>6.9?'mysqli':'mysql';

    php7 有很多地方不再兼容低版本。对于帝国cms7.5来说,受影响最深的就是编码转换了。

     

    在php7的地盘,PHP4的语法风格中的一些东西将被被抛弃。例如构造函数的用法,会在新的PHP7中完全被抛弃。PHP7将会提示一个: E_DEPRECATED的错误提示。

    <?php

    class foo {

    //方法名类名相同的构造函数的用法不再兼容

    function foo() {

    echo 'I am the constructor';

    }

    }

    ?>

    翻遍帝国cms7.的源代码,帝国cms的编码转换文件e/class/doiconv.php,有多处不适应php7

    可能受影响的模块: 

    支付---    http://bbs.phome.net/ShowThread/?threadid=360357&forumid=42   

    搜索 ---   http://bbs.phome.net/ShowThread?threadid=360428&forumid=42

    首字母生成----  http://bbs.phome.net/ShowThread?threadid=361442&forumid=13

    增加栏目生成拼音乱码 --- http://bbs.phome.net/ShowThread/?threadid=357442&forumid=42 
     

    本着少改的原则,提出如下修改办法---

    针对 e/class/doiconv.php 文件

    2.1 查找     function Chinese($dir='./') 

    修改为  

        function __construct($dir='./')

    2.2 查找 

    $this->config['codetable_dir'] = $dir."../data/codetable/";

    修改为

    $this->config['codetable_dir'] = ECMS_PATH."e/data/codetable/";

    2.3 查找

    /* 如果编码相同,直接返回 */

    if ($source_lang == $target_lang || $source_string == '')

    {

    return $source_string;

    }

    在其后添加:

    //edit by jiuhecai

    return mb_convert_encoding($source_string,$target_lang,$source_lang);

    2.4 查找

    while(list($key,$value)=each($tmp))

    替换为:

    foreach($tmp as $key=>$value)

    邮件发送模块,也有类似的问题

    邮件发送模块 e/class/class.smtp.php

    问题表现:  http://bbs.phome.net/ShowThread/?threadid=357544&forumid=42  

    解决方案:

    修改e/class/class.smtp.php

    3.1 查找 function SMTP() {

    修改为   function __construct() {

    3.2查找  while(list(,$line) = @each($lines)) {

    修改为:foreach($lines as $line){

    3.3查找  while(list(,$line_out) = @each($lines_out)) {

    修改为   foreach($lines_out as $line_out){

    3.4 查找 while(list(,$l) = @each($entries)) {

    修改为   foreach ($entries as $l){

    智久久_好东西分享_软件工具下载_模板源码分享_zhi99,一个优质的源码资源平台!
    智久久_好东西分享_软件工具下载_模板源码分享_zhi99 » 帝国ccms7.5在php7下需要改进的地方