请问小京东怎么把注册改成用户名注册,取消验证呢。

回复

小京东 发起了问题 • 1 人关注 • 0 个回复 • 224 次浏览 • 2018-09-15 11:09 • 来自相关话题

请问小京东短信模板编号从哪儿设置?

回复

小京东 发起了问题 • 1 人关注 • 0 个回复 • 224 次浏览 • 2018-09-13 21:41 • 来自相关话题

小京东在PHP 5.4以上版本报错的解决方案

小京东eBestMall 发表了文章 • 0 个评论 • 208 次浏览 • 2018-08-28 15:23 • 来自相关话题

不少朋友发现小京东在php高版本的情况下 会出现报错

 

1、PHP 5.4.X环境下安装ECShop出现“includes/cls_template.php on line 406”的解决方案。
将 $tag_sel = array_shift(explode(‘ ‘, $tag)); 这句话拆开为两句。
$tag_arr = explode(‘ ‘, $tag);
$tag_sel = array_shift($tag_arr);


array_shift() 的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值 end(&array) 也一样(后面也会有end的函数,也需要拆分为两行)。


2、PHP 5.4.X环境下安装ECShop出现“includes/lib_base.php on line 346”的解决方案。
将 cls_image.php 中 function gd_version() 改成 static function gd_version() 即可。


3、后台点击 开店向导 警告的解决方案。
admin/include/modules/payment 下的几个文件构造函数错误,删掉即可。




4、php5.4下安装的时候处理问题,Strict Standards: Non-static method cls_image::gd_version() should not be called statically in installincludeslib_installer.php on line 31

解决:找到install/includes/lib_installer.php中的第31行   return cls_image::gd_version();然后在找到include/cls_image.php中的678行,发现gd_version()方法未声明静态static,所以会出错。这时候只要:

将function gd_version()改成static function gd_version()即可。

 

5 安装好后出现 Strict standards: Only variables should be passed by reference in includeslib_main.php on line 1329

$ext = end(explode('.', $tmp));

修改为: 

$ext = explode('.',$tmp);
 $ext = end($ext);

 Strict standards: Only variables should be passed by reference in includescls_template.php on line 418

 tag_sel = array_shift(explode(' ', $tag)); 

修改为:

 $tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);





  查看全部
不少朋友发现小京东在php高版本的情况下 会出现报错

 

1、PHP 5.4.X环境下安装ECShop出现“includes/cls_template.php on line 406”的解决方案。
将 $tag_sel = array_shift(explode(‘ ‘, $tag)); 这句话拆开为两句。
$tag_arr = explode(‘ ‘, $tag);
$tag_sel = array_shift($tag_arr);


array_shift() 的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值 end(&array) 也一样(后面也会有end的函数,也需要拆分为两行)。


2、PHP 5.4.X环境下安装ECShop出现“includes/lib_base.php on line 346”的解决方案。
将 cls_image.php 中 function gd_version() 改成 static function gd_version() 即可。


3、后台点击 开店向导 警告的解决方案。
admin/include/modules/payment 下的几个文件构造函数错误,删掉即可。




4、php5.4下安装的时候处理问题,Strict Standards: Non-static method cls_image::gd_version() should not be called statically in installincludeslib_installer.php on line 31

解决:找到install/includes/lib_installer.php中的第31行   return cls_image::gd_version();然后在找到include/cls_image.php中的678行,发现gd_version()方法未声明静态static,所以会出错。这时候只要:

将function gd_version()改成static function gd_version()即可。

 

5 安装好后出现 Strict standards: Only variables should be passed by reference in includeslib_main.php on line 1329

$ext = end(explode('.', $tmp));

修改为: 

$ext = explode('.',$tmp);
 $ext = end($ext);

 Strict standards: Only variables should be passed by reference in includescls_template.php on line 418

 tag_sel = array_shift(explode(' ', $tag)); 

修改为:

 $tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);





 

小京东支付宝支付时出现错误

回复

小京东 发起了问题 • 1 人关注 • 0 个回复 • 333 次浏览 • 2018-08-28 07:27 • 来自相关话题

小京东 去版权 去后门 终极版 ecshop

小京东eBestMall 发表了文章 • 0 个评论 • 628 次浏览 • 2018-08-23 17:20 • 来自相关话题

小京东  去版权 去后门 终极版 ecshop 

完整去掉版权和后门的方法:

去ECSHOP版权,去官方后门,完整版


1、首先,去掉TITLE中的“Powered by ECShop”

(请注意,请勿用记事本编辑程序,可推荐使用EDITPLUS,小巧好用!)

打开文件:includes/lib_main.php

查找:$page_title = $GLOBALS[’_CFG’][’shop_title’] . ‘ - ‘ . ‘Powered by ECShop’;

将其改为

$page_title = $GLOBALS[’_CFG’][’shop_title’];

2、去掉页脚的版权信息,防止版权信息乱飞。

在ecshop根目录/themes/当前模板名/library/page_footer.lbi中, 找到如下代码并删除:

<a href="http://www.ecshop.com" target="_blank" style="font-size:10px">Powered by <strong><span style="color: #3366FF">ECShop</span> <span style="color: #FF9966">{$ecs_version}</span></strong></a><br />

删掉底部ecshop的logo,可选操作

默认模板:在ecshop根目录/themes/default/library/page_footer.lbi, 找到如下代码:

<img src="../images/footer-logo.gif" alt="" id="footer-logo" />

将其删掉即可.

3、修改文件代码头部的Generator标记,可防止其他程序识别为ECSHOP

修改文件:includes/cls_ecshop.php

查找:

define('APPNAME', 'ECSHOP');

修改为:

define('APPNAME', '自定义的网站代号');

4、修改文件:js/common.js

查找:onload = function() 代码段,全部删除

=================================

(2)去掉ECSHOP官方的后门检测程序。代码

=================================

1、修改文件:admin/shop_config.php

查找:$spt .= '"></script>';

在之后添加一行:

$spt = '';或者直接注释掉;

2、修改文件:admin/templates/index.htm

查找:

  <frameset rows="0, 0" framespacing="0" border="0">

  <frame src="http://api.ecshop.com/record.p ... rl%3D{$shop_url}" id="hidd-frame" name="hidd-frame" frameborder="no" scrolling="no">

  </frameset>

删除或注释

3、在MYSQL数据库的数据表:shop_config中查找字段code值为 certi 的记录,其值为:http://service.shopex.cn/openapi/api.php ,修改为一个错误的网址!

如:http://xxxxxxxxxx/openapi/api.php

4、修改文件:admin/templates/top.htm

查找:

Ajax.call('index.php?is_ajax=1&act=license','', start_sendmail_Response, 'GET', 'JSON');

注释或删除掉

5、修改文件:admin/templates/menu.htm

查找:

<script language="JavaScript" src="http://api.ecshop.com/menu_ext.php?charset={$charset}&lang={$help_lang}"></script>

注释或删除掉

6、修改文件:admin/templates/start.htm

查找:

<ul style="padding:0; margin: 0; list-style-type:none; color: #CC0000;">

 <!-- <script type="text/javascript" src="http://bbs.ecshop.com/notice.p ... gt%3B

</ul>

注释或删除掉

7、修改文件:admin/index.php

查找:

$t = new transport;

        $api_comment = $t->request('http://api.ecshop.com/checkver.php', $apiget);

        $api_str = $api_comment["body"];

        echo $api_str;

注释或删除掉

8、删除后台所有默认的友情链接以及默认LOGO

9、修改后台管理中相关文字

打开language/zh_cn/admin/common.php

$_LANG['cp_home'] = 'ECSHOP 管理中心';
$_LANG['copyright'] = '版权所有 © 2005-2009 上海商派网络科技有限公司,并保留所有权利。';

其他后门修改,如下所示:

1、删除【云服务中心】

删除/admin/cloud.php

删除/admin/templates/menu.htm中以下代码

Ajax.call('cloud.php?is_ajax=1>act=menu_api','', start_menu_api, 'GET', 'JSON');
删除/admin/templates/start.htm中以下代码

Ajax.call('cloud.php?is_ajax=1>act=cloud_remind','', cloud_api, 'GET', 'JSON');

function cloud_close(id)
{
Ajax.call('cloud.php?is_ajax=1>act=close_remind>remind_id='+id,'', cloud_api, 'GET', 'JSON');
}
删除/languages/zh_cn/admin/cloud.php

2、删除【数据库管理】-【转换数据】

删除/admin/convert.php

删除/admin/templates/convert_main.htm

删除/languages/zh_cn/convert目录及目录下的所有文件

删除/languages/zh_cn/admin/convert.php

/admin/includes/inc_menu.php中删除以下代码

$modules['13_backup']['convert'] = 'convert.php?act=main';
/admin/includes/inc_priv.php中删除以下代码

$purview['convert'] = 'convert';
/languages/zh_cn/admin/priv_action.php中删除以下代码

$_LANG['convert'] = '转换数据';
3、删除【系统设置】-【授权证书】

删除/admin/license.php

删除admin/templates/license.htm

删除/admin/includes/inc_menu.php中以下代码

$modules['11_system']['shop_authorized'] = 'license.php?act=list_edit';
删除/languages/zh_cn/admin/priv_action.php中以下代码

$_LANG['shop_authorized'] = '授权证书';
4、删除后台右上角【帮助】和【关于ECSHOP】

删除/admin/templates/top.htm中以下代码

<li><a href="/knowledge/used.html?act=about_us" target="main-frame">{$lang.about}</a></li>
<li><a href="javascript:web_address();">{$lang.help}</a></li>

END,完成所有修改。 查看全部
小京东  去版权 去后门 终极版 ecshop 

完整去掉版权和后门的方法:

去ECSHOP版权,去官方后门,完整版


1、首先,去掉TITLE中的“Powered by ECShop”

(请注意,请勿用记事本编辑程序,可推荐使用EDITPLUS,小巧好用!)

打开文件:includes/lib_main.php

查找:$page_title = $GLOBALS[’_CFG’][’shop_title’] . ‘ - ‘ . ‘Powered by ECShop’;

将其改为

$page_title = $GLOBALS[’_CFG’][’shop_title’];

2、去掉页脚的版权信息,防止版权信息乱飞。

在ecshop根目录/themes/当前模板名/library/page_footer.lbi中, 找到如下代码并删除:

<a href="http://www.ecshop.com" target="_blank" style="font-size:10px">Powered by <strong><span style="color: #3366FF">ECShop</span> <span style="color: #FF9966">{$ecs_version}</span></strong></a><br />

删掉底部ecshop的logo,可选操作

默认模板:在ecshop根目录/themes/default/library/page_footer.lbi, 找到如下代码:

<img src="../images/footer-logo.gif" alt="" id="footer-logo" />

将其删掉即可.

3、修改文件代码头部的Generator标记,可防止其他程序识别为ECSHOP

修改文件:includes/cls_ecshop.php

查找:

define('APPNAME', 'ECSHOP');

修改为:

define('APPNAME', '自定义的网站代号');

4、修改文件:js/common.js

查找:onload = function() 代码段,全部删除

=================================

(2)去掉ECSHOP官方的后门检测程序。代码

=================================

1、修改文件:admin/shop_config.php

查找:$spt .= '"></script>';

在之后添加一行:

$spt = '';或者直接注释掉;

2、修改文件:admin/templates/index.htm

查找:

  <frameset rows="0, 0" framespacing="0" border="0">

  <frame src="http://api.ecshop.com/record.p ... rl%3D{$shop_url}" id="hidd-frame" name="hidd-frame" frameborder="no" scrolling="no">

  </frameset>

删除或注释

3、在MYSQL数据库的数据表:shop_config中查找字段code值为 certi 的记录,其值为:http://service.shopex.cn/openapi/api.php ,修改为一个错误的网址!

如:http://xxxxxxxxxx/openapi/api.php

4、修改文件:admin/templates/top.htm

查找:

Ajax.call('index.php?is_ajax=1&act=license','', start_sendmail_Response, 'GET', 'JSON');

注释或删除掉

5、修改文件:admin/templates/menu.htm

查找:

<script language="JavaScript" src="http://api.ecshop.com/menu_ext.php?charset={$charset}&lang={$help_lang}"></script>

注释或删除掉

6、修改文件:admin/templates/start.htm

查找:

<ul style="padding:0; margin: 0; list-style-type:none; color: #CC0000;">

 <!-- <script type="text/javascript" src="http://bbs.ecshop.com/notice.p ... gt%3B

</ul>

注释或删除掉

7、修改文件:admin/index.php

查找:

$t = new transport;

        $api_comment = $t->request('http://api.ecshop.com/checkver.php', $apiget);

        $api_str = $api_comment["body"];

        echo $api_str;

注释或删除掉

8、删除后台所有默认的友情链接以及默认LOGO

9、修改后台管理中相关文字

打开language/zh_cn/admin/common.php

$_LANG['cp_home'] = 'ECSHOP 管理中心';
$_LANG['copyright'] = '版权所有 © 2005-2009 上海商派网络科技有限公司,并保留所有权利。';

其他后门修改,如下所示:

1、删除【云服务中心】

删除/admin/cloud.php

删除/admin/templates/menu.htm中以下代码

Ajax.call('cloud.php?is_ajax=1>act=menu_api','', start_menu_api, 'GET', 'JSON');
删除/admin/templates/start.htm中以下代码

Ajax.call('cloud.php?is_ajax=1>act=cloud_remind','', cloud_api, 'GET', 'JSON');

function cloud_close(id)
{
Ajax.call('cloud.php?is_ajax=1>act=close_remind>remind_id='+id,'', cloud_api, 'GET', 'JSON');
}
删除/languages/zh_cn/admin/cloud.php

2、删除【数据库管理】-【转换数据】

删除/admin/convert.php

删除/admin/templates/convert_main.htm

删除/languages/zh_cn/convert目录及目录下的所有文件

删除/languages/zh_cn/admin/convert.php

/admin/includes/inc_menu.php中删除以下代码

$modules['13_backup']['convert'] = 'convert.php?act=main';
/admin/includes/inc_priv.php中删除以下代码

$purview['convert'] = 'convert';
/languages/zh_cn/admin/priv_action.php中删除以下代码

$_LANG['convert'] = '转换数据';
3、删除【系统设置】-【授权证书】

删除/admin/license.php

删除admin/templates/license.htm

删除/admin/includes/inc_menu.php中以下代码

$modules['11_system']['shop_authorized'] = 'license.php?act=list_edit';
删除/languages/zh_cn/admin/priv_action.php中以下代码

$_LANG['shop_authorized'] = '授权证书';
4、删除后台右上角【帮助】和【关于ECSHOP】

删除/admin/templates/top.htm中以下代码

<li><a href="/knowledge/used.html?act=about_us" target="main-frame">{$lang.about}</a></li>
<li><a href="javascript:web_address();">{$lang.help}</a></li>

END,完成所有修改。

shopNC注册后无法登陆的问题

shopnceBestMall 发表了文章 • 0 个评论 • 214 次浏览 • 2018-08-23 17:17 • 来自相关话题

 
登录成功但跳过去还是没登陆,原因是服务器的session没打开。
 
1、查看phpStudy服务器 版本
2、找到对应版本的php.ini文件。并修改session.auto_start这行。把0改为1,设置为自动启用。3、修改后重启下phpStudy服务就可以了。
 
 
登录成功但跳过去还是没登陆,原因是服务器的session没打开。
 
1、查看phpStudy服务器 版本
2、找到对应版本的php.ini文件。并修改session.auto_start这行。把0改为1,设置为自动启用。3、修改后重启下phpStudy服务就可以了。 查看全部
 
登录成功但跳过去还是没登陆,原因是服务器的session没打开。
 
1、查看phpStudy服务器 版本
2、找到对应版本的php.ini文件。并修改session.auto_start这行。把0改为1,设置为自动启用。3、修改后重启下phpStudy服务就可以了。
 
 
登录成功但跳过去还是没登陆,原因是服务器的session没打开。
 
1、查看phpStudy服务器 版本
2、找到对应版本的php.ini文件。并修改session.auto_start这行。把0改为1,设置为自动启用。3、修改后重启下phpStudy服务就可以了。

shopnc b2b2c初次运行提示Class Error: mysqli.isn't exists!的解决方法

shopnceBestMall 发表了文章 • 0 个评论 • 278 次浏览 • 2018-08-23 17:17 • 来自相关话题

今天在自己电脑上配置好shopnc b2b2c后运行,提示错误信息:Class Error: mysqli.isn't exists!




后来经过一番辛苦找到报错的源头:\core\framework\db\mysqli.php中

private static function connect($host = 'slave'){


.....

self::$link[$host] = @new mysqli($conf['dbhost'], $conf['dbuser'], $conf['dbpwd'], $conf['dbname'], $conf['dbport']);          //从这一行代码报错


.....






原因是:PHP配置不正确。




解决方法:修改PHP配置文件php.ini,将;extension=php_mysqli.dll前面的分号去掉,重启Apache。




再次运行,OK了! 查看全部
今天在自己电脑上配置好shopnc b2b2c后运行,提示错误信息:Class Error: mysqli.isn't exists!




后来经过一番辛苦找到报错的源头:\core\framework\db\mysqli.php中

private static function connect($host = 'slave'){


.....

self::$link[$host] = @new mysqli($conf['dbhost'], $conf['dbuser'], $conf['dbpwd'], $conf['dbname'], $conf['dbport']);          //从这一行代码报错


.....






原因是:PHP配置不正确。




解决方法:修改PHP配置文件php.ini,将;extension=php_mysqli.dll前面的分号去掉,重启Apache。




再次运行,OK了!

shopnc 实现手机、邮箱、用户名登录

shopnceBestMall 发表了文章 • 0 个评论 • 219 次浏览 • 2018-08-23 17:16 • 来自相关话题

 
 
$username = trim($_POST['user_name']);            
            $RegExp='/^(?:13|15|18)[0-9]{9}$/'; //手机
            $RegExpemail='/^[a-z0-9][a-z\.0-9-_]+@[a-z0-9_-]+(?:\.[a-z]{0,3}\.[a-z]{0,2}|\.[a-z]{0,3}|\.[a-z]{0,2})$/i'; //邮箱
               if(preg_match($RegExp,$username)){
                $array['member_mobile'] = $username;
            }else if(preg_match($RegExpemail,$username)){
                $array['member_email'] = $username;
            }else{
                $array['member_name'] = $username;
            }        
            
            $array['member_passwd']    = md5($_POST['password']);        
            $member_info = $model_member->infoMember($array); 查看全部
 
 
$username = trim($_POST['user_name']);            
            $RegExp='/^(?:13|15|18)[0-9]{9}$/'; //手机
            $RegExpemail='/^[a-z0-9][a-z\.0-9-_]+@[a-z0-9_-]+(?:\.[a-z]{0,3}\.[a-z]{0,2}|\.[a-z]{0,3}|\.[a-z]{0,2})$/i'; //邮箱
               if(preg_match($RegExp,$username)){
                $array['member_mobile'] = $username;
            }else if(preg_match($RegExpemail,$username)){
                $array['member_email'] = $username;
            }else{
                $array['member_name'] = $username;
            }        
            
            $array['member_passwd']    = md5($_POST['password']);        
            $member_info = $model_member->infoMember($array);

SHOPNC 中开启sphinx全文检索

shopnceBestMall 发表了文章 • 0 个评论 • 208 次浏览 • 2018-08-23 17:15 • 来自相关话题

SHOPNC只支持迅搜全文检索

但通过修改可以添加shpinx/coreseek中文全文检索

安装coreseek,这个网上有很多教程,这里不再多嘴

修改:/data/config/config.ini.php
$config['fullindexer']['open']      = true;
$config['fullindexer']['type']      = 'coreseek';
$config['fullindexer']['coreseek']['server']      = '0573shop.vicp.net';
$config['fullindexer']['coreseek']['port']      = 9312;
$config['fullindexer']['coreseek']['querylimit']      = 20;
$config['fullindexer']['coreseek']['rankingmode']      = NULL;
$config['fullindexer']['coreseek']['matchmode']      = NULL;
$config['fullindexer']['coreseek']['index_shop']      = 'shop';
$config['fullindexer']['coreseek']['index_store']      = 'store_list';

修改/shop/control/search.php:
public function auto_completeOp() {
   try {
            if(C('fullindexer.appname')){
           require(BASE_DATA_PATH.'/api/xs/lib/XS.php');
           $obj_doc = new XSDocument();
           $obj_xs = new XS(C('fullindexer.appname'));
           $obj_index = $obj_xs->index;
           $obj_search = $obj_xs->search;
           $obj_search->setCharset(CHARSET);
                $corrected = $obj_search->getExpandedQuery($_GET['term']);
                if (count($corrected) !== 0) {
                    $data = array();
                    foreach ($corrected as $word)
                    {
                        $row['id'] = $word;
                        $row['label'] = $word;
                        $row['value'] = $word;
                        $data[] = $row;
                    }
                    exit(json_encode($data));
                }
            }elseif(C('fullindexer.type')=='coreseek'){
                //try{


                    require ( BASE_DATA_PATH.'/api/sphinxapi.php' );


                    $cl = new SphinxClient ();
                    $cl->SetServer ( C('fullindexer.coreseek.server'), C('fullindexer.coreseek.port'));
                    $cl->SetConnectTimeout ( 20 );
                    $cl->SetArrayResult ( true );
                    //$cl->SetMatchMode ( SPH_MATCH_ANY);
                    //echo iconv( 'UTF-8', 'GBK',$_GET['term']); //将字符串的编码从GB2312转到UTF-8 
                    //$cl->SetFilter ( "goods_name", [$_GET['term']]);
                    $res = $cl->Query ( $_GET['term'], "*" );
                    //exit(json_encode($res));
                    //php echo urlShop('goods','index',array('goods_id'=>$v['goods_id']));
                    if(count($res['matches'])>0){
                        $data = array();
                        //$md =  Model('goods');
                        foreach($res['matches'] as $item){
                            if(!$item['attrs']['goods_name'])continue;
                            $row=array();
                            $row['id'] = $item['id'];
                            //$good = $md->getGoodsInfo(array('goods_id'=>$item['id']));
                            $row['value'] = $item['attrs']['goods_name'];;// // $good['goods_jingle'];// 
                            $row['label'] = $item['attrs']['goods_name']; //$good['goods_name'];// 在下拉框中的值
                            $row['url']    = urlShop('goods','index',array('goods_id'=>$item['id'])); 
                            $data[] = $row;
                        }
                        //$data[] = $res;
                        exit(json_encode($data));
                    }
               // }
            }
        } catch (XSException $e) {
            if (is_object($obj_index)) {
                $obj_index->flushIndex();
            }
//             Log::record('search\auto_complete'.$e->getMessage(),Log::RUN);
        }
}
实现了首页搜索框的自动完成

附coreseek conf文件参考:



#源定义
source shop
{
    type                    = mysql


    sql_host                = DBHOST
    sql_user                = DBUSER
    sql_pass                = DBPASS
    sql_db                    = DBNAME
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8


    sql_query                = SELECT goods_id, goods_name, store_id FROM shopnc_goods
                                                              #sql_query第一列id需为整数
                                                              #title、content作为字符串/文本字段,被全文索引
    #sql_attr_uint            = goods_id           #从SQL读取到的值必须为整数
    sql_attr_uint            = store_id           #从SQL读取到的值必须为整数
    #sql_attr_timestamp        = date_added #从SQL读取到的值必须为整数,作为时间属性
    #sql_attr_string           = goods_name
    # sql_field_string         = store_name
    sql_field_string          = goods_name
    sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集
    sql_query_info            = SELECT * FROM shopnc_goods WHERE goods_id=$id #命令行查询时,从数据库读取原始数据信息
}
source store_list 
{
    type                    = mysql
    sql_host                = localhost
    sql_user                = root
    sql_pass                = root
    sql_db                    = shopnc
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8
    sql_query  = SELECT store_id , store_name, grade_id,member_name,seller_name,store_address,store_keywords,\
    store_description,store_qq FROM shopnc_store
    sql_field_string         = store_name
    sql_field_string         = member_name
    sql_field_string         = store_address
    sql_field_string         = store_description
}


#index定义
index shop
{
    source            = shop             #对应的source名称
    path            = E:/public/coreseek41/var/data/shop #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0


    #中文分词配置,详情请查看:http://www.coreseek.cn/product ... mseg/
    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    charset_dictpath = E:/public/coreseek41/etc/                           #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type        = zh_cn.utf-8
    #以下部分为中文分词核心配置
    #stopwords      = /path/to/stowords.txt的位置
    ngram_len                    = 0
    #以上部分为中文分词核心配置
}
index store_list:shop
{
    source = store_list
    path            = E:/public/coreseek41/var/data/store_list 
}
#全局index定义
indexer
{
    mem_limit            = 128M
}


#searchd服务定义
searchd
{
    listen                  =   9312
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file = E:/public/coreseek41/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    log = E:/public/coreseek41/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    query_log = E:/public/coreseek41/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    binlog_path =                                #关闭binlog日志
} 查看全部
SHOPNC只支持迅搜全文检索

但通过修改可以添加shpinx/coreseek中文全文检索

安装coreseek,这个网上有很多教程,这里不再多嘴

修改:/data/config/config.ini.php
$config['fullindexer']['open']      = true;
$config['fullindexer']['type']      = 'coreseek';
$config['fullindexer']['coreseek']['server']      = '0573shop.vicp.net';
$config['fullindexer']['coreseek']['port']      = 9312;
$config['fullindexer']['coreseek']['querylimit']      = 20;
$config['fullindexer']['coreseek']['rankingmode']      = NULL;
$config['fullindexer']['coreseek']['matchmode']      = NULL;
$config['fullindexer']['coreseek']['index_shop']      = 'shop';
$config['fullindexer']['coreseek']['index_store']      = 'store_list';

修改/shop/control/search.php:
public function auto_completeOp() {
   try {
            if(C('fullindexer.appname')){
           require(BASE_DATA_PATH.'/api/xs/lib/XS.php');
           $obj_doc = new XSDocument();
           $obj_xs = new XS(C('fullindexer.appname'));
           $obj_index = $obj_xs->index;
           $obj_search = $obj_xs->search;
           $obj_search->setCharset(CHARSET);
                $corrected = $obj_search->getExpandedQuery($_GET['term']);
                if (count($corrected) !== 0) {
                    $data = array();
                    foreach ($corrected as $word)
                    {
                        $row['id'] = $word;
                        $row['label'] = $word;
                        $row['value'] = $word;
                        $data[] = $row;
                    }
                    exit(json_encode($data));
                }
            }elseif(C('fullindexer.type')=='coreseek'){
                //try{


                    require ( BASE_DATA_PATH.'/api/sphinxapi.php' );


                    $cl = new SphinxClient ();
                    $cl->SetServer ( C('fullindexer.coreseek.server'), C('fullindexer.coreseek.port'));
                    $cl->SetConnectTimeout ( 20 );
                    $cl->SetArrayResult ( true );
                    //$cl->SetMatchMode ( SPH_MATCH_ANY);
                    //echo iconv( 'UTF-8', 'GBK',$_GET['term']); //将字符串的编码从GB2312转到UTF-8 
                    //$cl->SetFilter ( "goods_name", [$_GET['term']]);
                    $res = $cl->Query ( $_GET['term'], "*" );
                    //exit(json_encode($res));
                    //php echo urlShop('goods','index',array('goods_id'=>$v['goods_id']));
                    if(count($res['matches'])>0){
                        $data = array();
                        //$md =  Model('goods');
                        foreach($res['matches'] as $item){
                            if(!$item['attrs']['goods_name'])continue;
                            $row=array();
                            $row['id'] = $item['id'];
                            //$good = $md->getGoodsInfo(array('goods_id'=>$item['id']));
                            $row['value'] = $item['attrs']['goods_name'];;// // $good['goods_jingle'];// 
                            $row['label'] = $item['attrs']['goods_name']; //$good['goods_name'];// 在下拉框中的值
                            $row['url']    = urlShop('goods','index',array('goods_id'=>$item['id'])); 
                            $data[] = $row;
                        }
                        //$data[] = $res;
                        exit(json_encode($data));
                    }
               // }
            }
        } catch (XSException $e) {
            if (is_object($obj_index)) {
                $obj_index->flushIndex();
            }
//             Log::record('search\auto_complete'.$e->getMessage(),Log::RUN);
        }
}
实现了首页搜索框的自动完成

附coreseek conf文件参考:



#源定义
source shop
{
    type                    = mysql


    sql_host                = DBHOST
    sql_user                = DBUSER
    sql_pass                = DBPASS
    sql_db                    = DBNAME
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8


    sql_query                = SELECT goods_id, goods_name, store_id FROM shopnc_goods
                                                              #sql_query第一列id需为整数
                                                              #title、content作为字符串/文本字段,被全文索引
    #sql_attr_uint            = goods_id           #从SQL读取到的值必须为整数
    sql_attr_uint            = store_id           #从SQL读取到的值必须为整数
    #sql_attr_timestamp        = date_added #从SQL读取到的值必须为整数,作为时间属性
    #sql_attr_string           = goods_name
    # sql_field_string         = store_name
    sql_field_string          = goods_name
    sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集
    sql_query_info            = SELECT * FROM shopnc_goods WHERE goods_id=$id #命令行查询时,从数据库读取原始数据信息
}
source store_list 
{
    type                    = mysql
    sql_host                = localhost
    sql_user                = root
    sql_pass                = root
    sql_db                    = shopnc
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8
    sql_query  = SELECT store_id , store_name, grade_id,member_name,seller_name,store_address,store_keywords,\
    store_description,store_qq FROM shopnc_store
    sql_field_string         = store_name
    sql_field_string         = member_name
    sql_field_string         = store_address
    sql_field_string         = store_description
}


#index定义
index shop
{
    source            = shop             #对应的source名称
    path            = E:/public/coreseek41/var/data/shop #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0


    #中文分词配置,详情请查看:http://www.coreseek.cn/product ... mseg/
    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    charset_dictpath = E:/public/coreseek41/etc/                           #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type        = zh_cn.utf-8
    #以下部分为中文分词核心配置
    #stopwords      = /path/to/stowords.txt的位置
    ngram_len                    = 0
    #以上部分为中文分词核心配置
}
index store_list:shop
{
    source = store_list
    path            = E:/public/coreseek41/var/data/store_list 
}
#全局index定义
indexer
{
    mem_limit            = 128M
}


#searchd服务定义
searchd
{
    listen                  =   9312
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file = E:/public/coreseek41/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    log = E:/public/coreseek41/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    query_log = E:/public/coreseek41/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    binlog_path =                                #关闭binlog日志
}

shopnc excel导出功能

shopnceBestMall 发表了文章 • 0 个评论 • 268 次浏览 • 2018-08-23 17:14 • 来自相关话题

1 首先你要有这个类









<?php
/**
 * 生成Excel文件类
 *
 * @package    library* www.shopjl.com网店运维技术交流中心为你提供售后服务 以便你更好的了解
 */
defined('BYshopJL') or exit('Access Invalid!');
class Excel{
    /**
    * excel文档头(返回的行)
    *
    * 依照excel xml规范。
    * @access private
    * @var string
    */
    private $header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?\>
    <Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"
    xmlns:x=\"urn:schemas-microsoft-com:office:excel\"
    xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"
    xmlns:html=\"http://www.w3.org/TR/REC-html40\">";

    /**
    * excel页脚
    * 依照excel xml规范。
    *
    * @access private
    * @var string
    */
    private $footer = "</Workbook>";
    
    //设置一列的宽度
    private $colWidth = "";
    
    /**
    * 文档行(行数组中)
    *
    * @access private
    * @var array
    */
    private $lines = array ();
    /**
    * 工作表(数组)
    *
    * @access private
    * @var array
    */
    private $worksheets = array ();
    /**
    * 单元格样式
    * @access private
    * @var string
    */
    private $cellstyle = array();
    
    /**
    * 默认单元格数据格式
    * @access private
    * @var string
    */
    private $default_cellformat = "String";
    
    public function __construct(){
        //设置默认样式
        $this->cellstyle['Default'] = '<Style ss:ID="Default" ss:Name="Normal">
               <Alignment ss:Vertical="Center"/>
               <Borders/>
               <Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
               <Interior/>
               <NumberFormat/>
               <Protection/>
              </Style>';
    }
    /**
    * 添加单行数据
    *
    * @access private
    * @param array 1维数组
    * @todo 行创建
    */
    private function addRow ($array)
    {
        //初始化单元格
        $cells = "";
        //构建单元格
        foreach ($array as $k => $v){
            $style_str = '';
            if(!empty($v['styleid'])){
                $style_str = 'ss:StyleID="'.$v['styleid'].'"';
            }
            $format_str = $this->default_cellformat;
            if(!empty($v['format'])){
                $format_str = $v['format'];
            }
            $cells .= "<Cell {$style_str} ><Data ss:Type=\"{$format_str}\">{$v['data']}</Data></Cell>\n";
        }
        //构建行数据
        $this->lines[] = "<Row>\n" . $cells . "</Row>\n";            
    }
    /**
    * 添加多行数据
    * @access public
    * @param array 2维数组
    * @todo 构造多行
    */
    public function addArray ($array)
    {
        $this->lines = array();
        //构建行数据
        foreach ((array)$array as $k => $v){
            $this->addRow ($v);
        }
    }
    
    //设置一列的宽度    列号     宽度值 要在addWorksheet 前使用 可以参考member.php 写法
    public function setWidth($index,$value){        
        $this->colWidth .="<Column ss:Index=\"$index\" ss:AutoFitWidth=\"0\" ss:Width=\"$value\" />\n";
    }
    /**
    * 添加工作表
    * @access public
    * @param string $sheettitle 工作表名
    * @todo 构造工作表XML
    */
    public function addWorksheet($sheettitle)
    {
        //剔除特殊字符
        $sheettitle = preg_replace ("/[\\\|:|\/|\?|\*|
|
|
]/", "", $sheettitle);
        //现在,将其减少到允许的长度
        //$sheettitle = substr ($sheettitle, 0, 50);
        $str  = "\n<Worksheet ss:Name=\"$sheettitle\">\n<Table ss:DefaultRowHeight=\"20\">\n";
        $str .= $this->colWidth;
        $str .= implode ("\n", $this->lines).
                    "</Table>\n</Worksheet>\n";
        $this->worksheets[] = $str;
    }
    /**
    * 设置单元格样式
    * 
    * @access public
    * @param array 样式数组例如: array('id'=>'s_title','Font'=>array('FontName'=>'宋体','Size'=>'12','Bold'=>'1'));
    * 当id为Default时,为表格的默认样式
    */
    public function setStyle ($style_arr){
        if(empty($style_arr)){
            return false;
        }
        $id = $style_arr['id'];
        unset($style_arr['id']);
        $style_str = "<Style ss:ID=\"$id\">";
        foreach($style_arr as $k=>$v){
            $tmp = '';
            foreach((array)$v as $k_item=>$v_item){
                $tmp .= (" ss:$k_item=\"$v_item\"");
            }
            $style_str .= "<$k ".$tmp.'/>';
        }
        
        $this->cellstyle[$id] = $style_str.'</Style>';
    }
    /**
    * 设置默认单元格格式
    * 
    * @access public
    * @param string
    */
    public function setDefaultFormat ($format_str){
        if(empty($style_arr)){
            return false;
        }
        $this->default_cellformat = $format_str;
    }
    /**
    * 生成excel文件
    * 最后生成excel文件,并使用header()函数来将它交付给浏览器。
    * @access public
    * @param string $filename 文件名称
    */
    public function generateXML ($filename)
    {
        $encoded_filename = urlencode($filename);
        $encoded_filename = str_replace("+", "%20", $encoded_filename);
        //头
        $ua = $_SERVER["HTTP_USER_AGENT"];
        header("Content-Type: application/vnd.ms-excel");
        if(preg_match("/MSIE/", $ua)){
            header('Content-Disposition: attachment; filename="'.$encoded_filename.'.xls"');
        }else if(preg_match("/Firefox/", $ua)){
            header('Content-Disposition: attachment; filename*="utf8\'\''.$filename.'.xls"');
        }else{
            header('Content-Disposition: attachment; filename="'.$filename.'.xls"');
        }
        header('Cache-Control: max-age=0');
        echo stripslashes ($this->header);
        //样式
        echo "\n<Styles>";
        foreach((array)$this->cellstyle as $k=>$v){
            echo "\n".$v;
        }
        echo "\n</Styles>";
        //工作表
        echo implode ("\n", $this->worksheets);
        echo $this->footer;
    }

    /**
     * 转码函数
     *
     * @param mixed $content
     * @param string $from
     * @param string $to
     * @return mixed
     */
    public function charset($content, $from='gbk', $to='utf-8') {
        $from = strtoupper($from) == 'UTF8' ? 'utf-8' : $from;
        $to = strtoupper($to) == 'UTF8' ? 'utf-8' : $to;
        if (strtoupper($from) === strtoupper($to) || empty($content)) {
            //如果编码相同则不转换
            return $content;
        }
        if (function_exists('mb_convert_encoding')) {
             if (is_array($content)){
                $content = var_export($content, true);
                $content = mb_convert_encoding($content, $to, $from);
                eval("\$content = $content;");return $content;
            }else {
                return mb_convert_encoding($content, $to, $from);
            }
        } elseif (function_exists('iconv')) {
             if (is_array($content)){
                $content = var_export($content, true);
                $content = iconv($from, $to, $content);
                eval("\$content = $content;");return $content;
            }else {
                return iconv($from,$to,$content);
            }
        } else {
            return $content;
        }
    }
}
?>



其次 你要能用 
 代码 大概如下




    //导出全部会员信息
    public function member_export_allOp(){
        $model = Model("member");

      //这段都不用太看 就是组合 查询条件
        $member_grade = $model->getMemberGradeArr();
        
        if ($_GET['search_field_value'] != '') {
            switch ($_GET['search_field_name']){
                case 'member_name':
                    $condition['member_name'] = array('like', '%' . trim($_GET['search_field_value']) . '%');
                    break;
                case 'member_email':
                    $condition['member_email'] = array('like', '%' . trim($_GET['search_field_value']) . '%');
                    break;
                case 'member_truename':
                    $condition['member_truename'] = array('like', '%' . trim($_GET['search_field_value']) . '%');
                    break;
            }
        }
        switch ($_GET['search_state']){
            case 'no_informallow':
                $condition['inform_allow'] = '2';
                break;
            case 'no_isbuy':
                $condition['is_buy'] = '0';
                break;
            case 'no_isallowtalk':
                $condition['is_allowtalk'] = '0';
                break;
            case 'no_memberstate':
                $condition['member_state'] = '0';
                break;
        }
        //会员等级
        $search_grade = intval($_GET['search_grade']);
        if ($search_grade >= 0 && $member_grade){
            $condition['member_exppoints'] = array(array('egt',$member_grade[$search_grade]['exppoints']),array('lt',$member_grade[$search_grade+1]['exppoints']),'and');
        }
        //排序
        $order = trim($_GET['search_sort']);
        if (empty($order)) {
            $order = 'member_id desc';
        }
        
        if (!is_numeric($_GET['curpage'])){
            $count = $model->where($condition)->count();
            $array = array();
            if ($count > self::EXPORT_SIZE ){    //显示下载链接
                $page = ceil($count/self::EXPORT_SIZE);
                for ($i=1;$i<=$page;$i++){
                    $limit1 = ($i-1)*self::EXPORT_SIZE + 1;
                    $limit2 = $i*self::EXPORT_SIZE > $count ? $count : $i*self::EXPORT_SIZE;
                    $array[$i] = $limit1.' ~ '.$limit2 ;
                }
                Tpl::output('list',$array);
                Tpl::output('murl','index.php?act=member&op=member');
                Tpl::showpage('export.excel');
            }else{    //如果数量小,直接下载
                $data = $model->where($condition)->order('member_id desc')->limit(self::EXPORT_SIZE)->select();
                $this->createExcel($data);
            }
        }else{    //下载
            $limit1 = ($_GET['curpage']-1) * self::EXPORT_SIZE;
            $limit2 = self::EXPORT_SIZE;
            $data = $model->where($condition)->order('member_id desc')->limit("{$limit1},{$limit2}")->select();
            $this->createExcel($data);
        }
    }
    
     
    private function createExcel($data = array()){
        Language::read('export');
        import('libraries.excel');
        $excel_obj = new Excel();
        $excel_data = array();
        //设置样式
        
        $excel_obj->setStyle(array('id'=>'s_title','Font'=>array('FontName'=>'宋体','Size'=>'12','Bold'=>'1'))); 
        //header
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'会员');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'真实姓名');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'登录次数');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'最后登录时间');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'最后登录ip');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'积分');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'可用预存款');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'冻结预存款'); 
         
        foreach ((array)$data as $k=>$v){
            $tmp = array();
            $tmp[] = array('data'=>$v['member_name']);
            $tmp[] = array('data'=>$v['member_truename']);
            $tmp[] = array('data'=>$v['member_login_num']);
            $tmp[] = array('data'=>empty($v['member_login_time'])?"":date('Y-m-d H:i:s',$v['member_login_time'])); 
            $tmp[] = array('data'=>$v['member_login_ip']); 
            $tmp[] = array('data'=>$v['member_points']);
            $tmp[] = array('data'=>'可用'.$v['available_predeposit']);
            $tmp[] = array('data'=>"冻结".$v['freeze_predeposit']); 
            $excel_data[] = $tmp;
        }
        

       //设置每列宽度

        $excel_obj->setWidth(1,100);
        $excel_obj->setWidth(2,100);
        $excel_obj->setWidth(3,100);
        $excel_obj->setWidth(4,140);
        $excel_obj->setWidth(5,100);
        $excel_obj->setWidth(6,100);
        $excel_obj->setWidth(7,100);
        $excel_obj->setWidth(8,100);
        
        $excel_data = $excel_obj->charset($excel_data,CHARSET);
        $excel_obj->addArray($excel_data);
        $excel_obj->addWorksheet($excel_obj->charset('会员信息',CHARSET));
        $excel_obj->generateXML($excel_obj->charset('会员信息',CHARSET).$_GET['curpage'].'-'.date('Y-m-d-H',time()));
    }



行吧 就这样吧  大概就是 xml  被 excel 识别了 查看全部
1 首先你要有这个类









<?php
/**
 * 生成Excel文件类
 *
 * @package    library* www.shopjl.com网店运维技术交流中心为你提供售后服务 以便你更好的了解
 */
defined('BYshopJL') or exit('Access Invalid!');
class Excel{
    /**
    * excel文档头(返回的行)
    *
    * 依照excel xml规范。
    * @access private
    * @var string
    */
    private $header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?\>
    <Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"
    xmlns:x=\"urn:schemas-microsoft-com:office:excel\"
    xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"
    xmlns:html=\"http://www.w3.org/TR/REC-html40\">";

    /**
    * excel页脚
    * 依照excel xml规范。
    *
    * @access private
    * @var string
    */
    private $footer = "</Workbook>";
    
    //设置一列的宽度
    private $colWidth = "";
    
    /**
    * 文档行(行数组中)
    *
    * @access private
    * @var array
    */
    private $lines = array ();
    /**
    * 工作表(数组)
    *
    * @access private
    * @var array
    */
    private $worksheets = array ();
    /**
    * 单元格样式
    * @access private
    * @var string
    */
    private $cellstyle = array();
    
    /**
    * 默认单元格数据格式
    * @access private
    * @var string
    */
    private $default_cellformat = "String";
    
    public function __construct(){
        //设置默认样式
        $this->cellstyle['Default'] = '<Style ss:ID="Default" ss:Name="Normal">
               <Alignment ss:Vertical="Center"/>
               <Borders/>
               <Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
               <Interior/>
               <NumberFormat/>
               <Protection/>
              </Style>';
    }
    /**
    * 添加单行数据
    *
    * @access private
    * @param array 1维数组
    * @todo 行创建
    */
    private function addRow ($array)
    {
        //初始化单元格
        $cells = "";
        //构建单元格
        foreach ($array as $k => $v){
            $style_str = '';
            if(!empty($v['styleid'])){
                $style_str = 'ss:StyleID="'.$v['styleid'].'"';
            }
            $format_str = $this->default_cellformat;
            if(!empty($v['format'])){
                $format_str = $v['format'];
            }
            $cells .= "<Cell {$style_str} ><Data ss:Type=\"{$format_str}\">{$v['data']}</Data></Cell>\n";
        }
        //构建行数据
        $this->lines[] = "<Row>\n" . $cells . "</Row>\n";            
    }
    /**
    * 添加多行数据
    * @access public
    * @param array 2维数组
    * @todo 构造多行
    */
    public function addArray ($array)
    {
        $this->lines = array();
        //构建行数据
        foreach ((array)$array as $k => $v){
            $this->addRow ($v);
        }
    }
    
    //设置一列的宽度    列号     宽度值 要在addWorksheet 前使用 可以参考member.php 写法
    public function setWidth($index,$value){        
        $this->colWidth .="<Column ss:Index=\"$index\" ss:AutoFitWidth=\"0\" ss:Width=\"$value\" />\n";
    }
    /**
    * 添加工作表
    * @access public
    * @param string $sheettitle 工作表名
    * @todo 构造工作表XML
    */
    public function addWorksheet($sheettitle)
    {
        //剔除特殊字符
        $sheettitle = preg_replace ("/[\\\|:|\/|\?|\*|
|
|
]/", "", $sheettitle);
        //现在,将其减少到允许的长度
        //$sheettitle = substr ($sheettitle, 0, 50);
        $str  = "\n<Worksheet ss:Name=\"$sheettitle\">\n<Table ss:DefaultRowHeight=\"20\">\n";
        $str .= $this->colWidth;
        $str .= implode ("\n", $this->lines).
                    "</Table>\n</Worksheet>\n";
        $this->worksheets[] = $str;
    }
    /**
    * 设置单元格样式
    * 
    * @access public
    * @param array 样式数组例如: array('id'=>'s_title','Font'=>array('FontName'=>'宋体','Size'=>'12','Bold'=>'1'));
    * 当id为Default时,为表格的默认样式
    */
    public function setStyle ($style_arr){
        if(empty($style_arr)){
            return false;
        }
        $id = $style_arr['id'];
        unset($style_arr['id']);
        $style_str = "<Style ss:ID=\"$id\">";
        foreach($style_arr as $k=>$v){
            $tmp = '';
            foreach((array)$v as $k_item=>$v_item){
                $tmp .= (" ss:$k_item=\"$v_item\"");
            }
            $style_str .= "<$k ".$tmp.'/>';
        }
        
        $this->cellstyle[$id] = $style_str.'</Style>';
    }
    /**
    * 设置默认单元格格式
    * 
    * @access public
    * @param string
    */
    public function setDefaultFormat ($format_str){
        if(empty($style_arr)){
            return false;
        }
        $this->default_cellformat = $format_str;
    }
    /**
    * 生成excel文件
    * 最后生成excel文件,并使用header()函数来将它交付给浏览器。
    * @access public
    * @param string $filename 文件名称
    */
    public function generateXML ($filename)
    {
        $encoded_filename = urlencode($filename);
        $encoded_filename = str_replace("+", "%20", $encoded_filename);
        //头
        $ua = $_SERVER["HTTP_USER_AGENT"];
        header("Content-Type: application/vnd.ms-excel");
        if(preg_match("/MSIE/", $ua)){
            header('Content-Disposition: attachment; filename="'.$encoded_filename.'.xls"');
        }else if(preg_match("/Firefox/", $ua)){
            header('Content-Disposition: attachment; filename*="utf8\'\''.$filename.'.xls"');
        }else{
            header('Content-Disposition: attachment; filename="'.$filename.'.xls"');
        }
        header('Cache-Control: max-age=0');
        echo stripslashes ($this->header);
        //样式
        echo "\n<Styles>";
        foreach((array)$this->cellstyle as $k=>$v){
            echo "\n".$v;
        }
        echo "\n</Styles>";
        //工作表
        echo implode ("\n", $this->worksheets);
        echo $this->footer;
    }

    /**
     * 转码函数
     *
     * @param mixed $content
     * @param string $from
     * @param string $to
     * @return mixed
     */
    public function charset($content, $from='gbk', $to='utf-8') {
        $from = strtoupper($from) == 'UTF8' ? 'utf-8' : $from;
        $to = strtoupper($to) == 'UTF8' ? 'utf-8' : $to;
        if (strtoupper($from) === strtoupper($to) || empty($content)) {
            //如果编码相同则不转换
            return $content;
        }
        if (function_exists('mb_convert_encoding')) {
             if (is_array($content)){
                $content = var_export($content, true);
                $content = mb_convert_encoding($content, $to, $from);
                eval("\$content = $content;");return $content;
            }else {
                return mb_convert_encoding($content, $to, $from);
            }
        } elseif (function_exists('iconv')) {
             if (is_array($content)){
                $content = var_export($content, true);
                $content = iconv($from, $to, $content);
                eval("\$content = $content;");return $content;
            }else {
                return iconv($from,$to,$content);
            }
        } else {
            return $content;
        }
    }
}
?>



其次 你要能用 
 代码 大概如下




    //导出全部会员信息
    public function member_export_allOp(){
        $model = Model("member");

      //这段都不用太看 就是组合 查询条件
        $member_grade = $model->getMemberGradeArr();
        
        if ($_GET['search_field_value'] != '') {
            switch ($_GET['search_field_name']){
                case 'member_name':
                    $condition['member_name'] = array('like', '%' . trim($_GET['search_field_value']) . '%');
                    break;
                case 'member_email':
                    $condition['member_email'] = array('like', '%' . trim($_GET['search_field_value']) . '%');
                    break;
                case 'member_truename':
                    $condition['member_truename'] = array('like', '%' . trim($_GET['search_field_value']) . '%');
                    break;
            }
        }
        switch ($_GET['search_state']){
            case 'no_informallow':
                $condition['inform_allow'] = '2';
                break;
            case 'no_isbuy':
                $condition['is_buy'] = '0';
                break;
            case 'no_isallowtalk':
                $condition['is_allowtalk'] = '0';
                break;
            case 'no_memberstate':
                $condition['member_state'] = '0';
                break;
        }
        //会员等级
        $search_grade = intval($_GET['search_grade']);
        if ($search_grade >= 0 && $member_grade){
            $condition['member_exppoints'] = array(array('egt',$member_grade[$search_grade]['exppoints']),array('lt',$member_grade[$search_grade+1]['exppoints']),'and');
        }
        //排序
        $order = trim($_GET['search_sort']);
        if (empty($order)) {
            $order = 'member_id desc';
        }
        
        if (!is_numeric($_GET['curpage'])){
            $count = $model->where($condition)->count();
            $array = array();
            if ($count > self::EXPORT_SIZE ){    //显示下载链接
                $page = ceil($count/self::EXPORT_SIZE);
                for ($i=1;$i<=$page;$i++){
                    $limit1 = ($i-1)*self::EXPORT_SIZE + 1;
                    $limit2 = $i*self::EXPORT_SIZE > $count ? $count : $i*self::EXPORT_SIZE;
                    $array[$i] = $limit1.' ~ '.$limit2 ;
                }
                Tpl::output('list',$array);
                Tpl::output('murl','index.php?act=member&op=member');
                Tpl::showpage('export.excel');
            }else{    //如果数量小,直接下载
                $data = $model->where($condition)->order('member_id desc')->limit(self::EXPORT_SIZE)->select();
                $this->createExcel($data);
            }
        }else{    //下载
            $limit1 = ($_GET['curpage']-1) * self::EXPORT_SIZE;
            $limit2 = self::EXPORT_SIZE;
            $data = $model->where($condition)->order('member_id desc')->limit("{$limit1},{$limit2}")->select();
            $this->createExcel($data);
        }
    }
    
     
    private function createExcel($data = array()){
        Language::read('export');
        import('libraries.excel');
        $excel_obj = new Excel();
        $excel_data = array();
        //设置样式
        
        $excel_obj->setStyle(array('id'=>'s_title','Font'=>array('FontName'=>'宋体','Size'=>'12','Bold'=>'1'))); 
        //header
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'会员');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'真实姓名');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'登录次数');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'最后登录时间');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'最后登录ip');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'积分');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'可用预存款');
        $excel_data[0][] = array('styleid'=>'s_title','data'=>'冻结预存款'); 
         
        foreach ((array)$data as $k=>$v){
            $tmp = array();
            $tmp[] = array('data'=>$v['member_name']);
            $tmp[] = array('data'=>$v['member_truename']);
            $tmp[] = array('data'=>$v['member_login_num']);
            $tmp[] = array('data'=>empty($v['member_login_time'])?"":date('Y-m-d H:i:s',$v['member_login_time'])); 
            $tmp[] = array('data'=>$v['member_login_ip']); 
            $tmp[] = array('data'=>$v['member_points']);
            $tmp[] = array('data'=>'可用'.$v['available_predeposit']);
            $tmp[] = array('data'=>"冻结".$v['freeze_predeposit']); 
            $excel_data[] = $tmp;
        }
        

       //设置每列宽度

        $excel_obj->setWidth(1,100);
        $excel_obj->setWidth(2,100);
        $excel_obj->setWidth(3,100);
        $excel_obj->setWidth(4,140);
        $excel_obj->setWidth(5,100);
        $excel_obj->setWidth(6,100);
        $excel_obj->setWidth(7,100);
        $excel_obj->setWidth(8,100);
        
        $excel_data = $excel_obj->charset($excel_data,CHARSET);
        $excel_obj->addArray($excel_data);
        $excel_obj->addWorksheet($excel_obj->charset('会员信息',CHARSET));
        $excel_obj->generateXML($excel_obj->charset('会员信息',CHARSET).$_GET['curpage'].'-'.date('Y-m-d-H',time()));
    }



行吧 就这样吧  大概就是 xml  被 excel 识别了