• 专注于网站建设,网络推广,关键词优化,SEO优化,专业的网站建设开发团队!
首页 > IT技术 > PHP > 内容

ThinkPHP3.1.2整合UCenter详解

2015-06-11 22:38:12   来源:叶景网络
    最近应公司的要求,要开发一个有点像QQ空间那样的会员管理中心网站,发现UCenter的很多功能酷似QQ空间,于是选择了UCenter作为程序的会员管理中心。前台嘛就选择我之前基于ThinkPHP3.1.2框架开发的WBlog好了。但是问题又来了:要求在WBlog前台注册的会员登录时要与UCenter同步,这就是我这次要解决的问题--ThinkPHP与UCenter的整合。
    我在网上搜索了一下,ThinkPHP与UCenter的整合并不少,但是似乎越看越觉得头晕,不是少这就是少那,到头来差之毫厘,谬以千里,真够折腾的。我仔细阅读了UCenter的开发文档后,经过多次的调试,终于完成了ThinkPHP与UCenter的整合。感觉这个结果是从苦水里泡出来的一样,呵呵。。。现在网菠萝果把整合的记录分享给需要的童鞋。
    温馨提示:在thinphp与UCenter整合中,您需要的基本条件是,有一定的PHP基础,对ThinkPHP框架有所了解,会布署目录和配置数据。
    好了,我们开始吧!
    下载并安装下面的程序
    WBlog3.1.2
    UCenter_Home_2.0_SC_UTF8
    UCenter 1.6.0
    安装WBlog博客程序
    在写本文之前,已发布的WBlog博客程序还没有会员中心,本次测试的会员中心是后面才写的。如果你能等的话要待我整理好WBlog的会员中心程序才发布,不能等的话也不会影响下面的程序整合,因为你可以找或者自己写简单的满足以下两个条件的thikphp程序:
    1、可以注册会员
    2、可以登录和退出。
    这里我就使用WBlog3.1.2了。在服务器的根目录新建目录wblog1,把下载的WBlog3.1.2解压得到的WBlog目录里的所有文件复制到wblog1。在浏览器输入http://127.0.0.1/wblog1/install/,安装WBlog3.1.2。
    温馨提示:在整合时最容易搞错的就是路径问题,在接下来的整合操作的根目录都是指wblog1目录,所以要和服务器根目录区别开来。
    安装UCenter 1.6.0(简体UTF-8)
    这个程序到官方去下载吧。在网站根目录wblog1新建 ucenter 目录,解压UCenter 1.6.0,把解压得到的upload目录里的所有文件复制到刚才新建的ucenter目录里。在浏览器输入http://127.0.0.1/wblog1/ucenter/install/,安装UCenter 1.6.0。
    安装UCenter_Home_2.0_SC_UTF8(简体中文版)
    在网站根目录wblog1新建 uh目录并解压UCenter_Home_2.0_SC_UTF8,把解压得到的upload目录里的所有文件复制到刚才新建的uh目录里。在浏览器输入http://127.0.0.1/wblog1/uh/install/,安装UCenter_Home_2.0_SC_UTF8。
    需要注意的是,安装UCenter 1.6.0和UCenter_Home_2.0_SC_UTF8时顺序不能颠倒,否则无法安装。
    好了,太累了,到这里就先告一段落吧,明天继续。
    //================================================
    由以上我们安装完了WBlog3.1.2、UCenter_Home_2.0_SC_UTF8和UCenter 1.6.0三个程序后。接下来接着上一篇讲。找到下载的UCenter 1.6.0,把 advanced 目录里面的
    uc_client 和 examples下面的api 文件夹复制到网站根目录wblog1下,和ThinkPHP在同一目录。找到项目W3note的配置文件夹wblog1/ Conf/,在其新建一个UCenter的配置文件 config_ucenter.php ,然后在WBlog1\W3note\Lib\ORG目录下新建一个UCenter的通讯处理类文件UcService.class.php,我们先不要管文件里面写什么代码,后面将会讲到。好了到这里已经把后面要操作的目录和文件都布局好了。为了理清目录和文件之间的层次关系,我把目录和文件制成目录树列出来:
    wblog1根目录
    |  –  index.php//前台入口文件
    |  –  admin.php
    |  –  W3note//前台项目
    |           |  – Lib
    |           |       |  – ORG
    |           |       |       |  –UcService.class.php //UCenter的通讯处理类文件
    |           |  – Conf//W3note项目的配置目录
    |           |       |  –config_ucenter.php //UCenter的配置文件
    |           |
    |  –  Admin
    |  –  ThinkPHP //thinkphp3.1.2核心包和一些扩展
    |  –  install 
    |  –  api  
    |       | –  uc.php 
    |
    |  –  uc_client 
    |  –  ucenter 
    |  –  uh  
    这样我们就可以一目了然了。
    现在开始api目录里面的uc.php 配置了,首先打开这个文件,找到36行的位置这一行代码
    require_once DISCUZ_ROOT.'./config.inc.php';
    把'./config.inc.php'这一部分替换成'./W3note/Conf/config_ucenter.php'
    往下找还会看到几处的'./config.inc.php',按照上面的操作全部替换掉。这样做目的是把前面建的配置文件config_ucenter.php导进来。  接下来我登录http://127.0.0.1/wblog1/ucenter,在打开左边菜单“应用管理”这一项,然后添加一个新应用,这时我们发现好多东西要填!
    照着下面操作就是了。先看应用类型,因为这是我们自己开发的程序,所以就选其它吧,再看应用名称,随便填,只要不超过20字节就行了,我这里填wblog。接下来是应用的主URL,这里填网站的主页http;//127.0.0.1/wblog1,注意了,后面没有“/”。至于应用的其他URL还有应用IP这两项就跳过,不用管它了。接下来是通信密钥,就按其旁边的提示填就是了,我这里填abc123456。往下是应用的物路径,提示说默认为空,那就留空吧,还有查看个人资料页面地址也留空吧。接下来是应用接口文件名称,默认为uc.php,保持原状吧。继续往下看,标签单条显示模板还有标签模板标记说明这两项也不用理它,跳过。是否开启同步登录,选是;是否接受通知也选是吧。终于填完了,那就点击提交吧!
    还记得前面在uc.php导入的文件config_ucenter.php吗,里面可是一片空白啊,现在我们就来放些配置信息进去。刚才我们填好的信息提交后,会在提交按钮下面的“应用的UCenter配置信息”下面生成了一些配置信息,我们直接把它复制,然后粘帖到config_ucenter.php,保存。
    网上很多教程到这里就表示通信成功了,在这里我非常惊讶!因为通信并未成功!我在这里折腾了一些时间,后来仔细检了uc.php文件的代码,发现59行:
    require_once DISCUZ_ROOT.'./include/db_mysql.class.php';
    我在布局的目录中始终找不到db_mysql.class.php,后来发现db_mysql.class.php存UCenter_1.6.0_SC_UTF8\advanced\examples\include目录中,这就是问题所在!因为我们之前复制的只是UCenter_1.6.0_SC_UTF8\advanced\examples\中的api文件。
    解决这一问题的办法就是把上面的代码修改为
    require_once DISCUZ_ROOT.'./uc_client/lib/db.class.php';
    导入的数据库类文件变了,那么我们也要对其所涉及的内容作相应的修改,在uc.php59行的下面如
    $GLOBALS['db'] = new dbstuff; 
    $GLOBALS['db']->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset); 
    $GLOBALS['tablepre'] = $tablepre;
    修改为
    $GLOBALS['db'] = new ucclient_db; 
    $GLOBALS['db']->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, UC_DBNAME, UC_DBCONNECT, true, UC_DBCHARSET); 
    $GLOBALS['tablepre'] = UC_DBTABLEPRE;//关键
    上面数据库的链接信息的静态变量来自config_ucenter.php。
    好了,我们回到后台ucenter刷新一下页面,发现什么---通信成功了!
    如果按上面的操作还未通信成功的,请留言,有空我会回复!
    //===============================================================
    由以上的操作已经实现了通讯成功了!那么接下来我们的目标:
    在thinkphp中会员注册成功时,UCenter Home也同时注册成功。
    首先在项目W3note入口文件index.php配置一个常量
    define('WBLOG_ROOT_PATH', rtrim(dirname(__FILE__), '/\\') . DIRECTORY_SEPARATOR);//物理根目录
    常量WBLOG_ROOT_PATH是网站根目录wblog1的物理根目录,在我本地服务器打印输出:
    D:\phpsever\apache2\htdocs\wblog1\
    有必要在这里强调一下,理解WBLOG_ROOT_PATH很重要,因为在调试过程中路径最容易出错。
    还记得前面我们建的UcService.class.php 文件吗?如果忘记了请看一下前面的目录树。打开UcService.class.php文件,新建一个类UcService,然后写一个构造方法导入W3note/Conf/config_ucenter.php和uc_client/client.php两个文件。代码:
    class UcService{   
    public function __construct(){   
    include_once(WBLOG_ROOT_PATH . 'W3note/Conf/config_ucenter.php');   
    include_once(WBLOG_ROOT_PATH . 'uc_client/client.php');   
    }
    接下来我们写一个会员注册方法register,如
    public function register($username, $password, $email){}
    方法体放什么代码呢?其实很简单,因为UCenter的开发文档已经为我们准备好了!
    找到之前下载的UCenter_1.6.0_SC_UTF8,用浏览器打开UCenter_1.6.0_SC_UTF\advanced\document\index.htm,然后在左边的菜单栏找到“用户接口”,看到用户注册示例 (PHP),把其下的代码复制过来。如下
    /**   
    * 会员注册   
    */
    public function register($username, $password, $email){   
    $uid = uc_user_register($username, $password, $email);//UCenter的注册验证函数   
    if($uid <= 0) {   
    if($uid == -1) {   
    return '用户名不合法';   
    } elseif($uid == -2) {   
    return '包含不允许注册的词语';   
    } elseif($uid == -3) {   
    return '用户名已经存在';   
    } elseif($uid == -4) {   
    return 'Email 格式有误';   
    } elseif($uid == -5) {   
    return 'Email 不允许注册';   
    } elseif($uid == -6) {   
    return '该 Email 已经被注册';   
    } else {   
    return '未定义';   
    }   
    } else {   
    return intval($uid);//返回一个非负数   
    }   
    }   
    }
    这个注册方法register的作用是,在wblog1的会员注册中成功注册一个会员时,也会成功注册UCenter Home的会员中心中。UCenter的注册方法我们在上面已经写好了,现在回到thinkphp。我们在前台W3note项目的控制器MemberAction写一个注册方法,代码如下:
    /*   
    用户名:$username,    
    密码:$password,    
    邮箱:$email   
    */
    public function addmember(){    
    if($this->isPost()){   
    $username = $_POST['username'];   
    $email = $_POST['email'];   
    $password = trim($_POST['password']);   
    import("@.ORG.UcService");//导入UcService.class.php类   
    $ucService = new UcService;//实例化UcService类   
    $uid = $ucService->register($username, $password, $email);//注册到UCenter   
    if($uid){//如果上面注册成功将返回一个int类型的数字   
    $M = D('Member');   
    if ($vo = $M->create()) {   
    if ($M->add()) {   
    $this->success('注册成功!');   
    } else {   
    $this->error('注册失败!');   
    }   
    } else {   
    $this->error();   
    }   
    }else{   
    exit($uid);   
    }   
    }else{   
    $this->error('非法数据!');   
    }   
    }
    我们在thinkphp会员注册页面注册一个帐号,提交表单后,查看wblog1和UCenter的会员数据表,发现两张表都存相同的帐号,说明同步注册已经成功了!
    本文来自来网志博客!ThinkPHP3.1.2整合UCenter详解
    最近应公司的要求,要开发一个有点像QQ空间那样的会员管理中心网站,发现UCenter的很多功能酷似QQ空间,于是选择了UCenter作为程序的会员管理中心。前台嘛就选择我之前基于ThinkPHP3.1.2框架开发的WBlog好了。但是问题又来了:要求在WBlog前台注册的会员登录时要与UCenter同步,这就是我这次要解决的问题--ThinkPHP与UCenter的整合。
    我在网上搜索了一下,ThinkPHP与UCenter的整合并不少,但是似乎越看越觉得头晕,不是少这就是少那,到头来差之毫厘,谬以千里,真够折腾的。我仔细阅读了UCenter的开发文档后,经过多次的调试,终于完成了ThinkPHP与UCenter的整合。感觉这个结果是从苦水里泡出来的一样,呵呵。。。现在网菠萝果把整合的记录分享给需要的童鞋。
    温馨提示:在thinphp与UCenter整合中,您需要的基本条件是,有一定的PHP基础,对ThinkPHP框架有所了解,会布署目录和配置数据。
    好了,我们开始吧!
    下载并安装下面的程序
    WBlog3.1.2
    UCenter_Home_2.0_SC_UTF8
    UCenter 1.6.0
    安装WBlog博客程序
    在写本文之前,已发布的WBlog博客程序还没有会员中心,本次测试的会员中心是后面才写的。如果你能等的话要待我整理好WBlog的会员中心程序才发布,不能等的话也不会影响下面的程序整合,因为你可以找或者自己写简单的满足以下两个条件的thikphp程序:
    1、可以注册会员
    2、可以登录和退出。
    这里我就使用WBlog3.1.2了。在服务器的根目录新建目录wblog1,把下载的WBlog3.1.2解压得到的WBlog目录里的所有文件复制到wblog1。在浏览器输入http://127.0.0.1/wblog1/install/,安装WBlog3.1.2。
    温馨提示:在整合时最容易搞错的就是路径问题,在接下来的整合操作的根目录都是指wblog1目录,所以要和服务器根目录区别开来。
    安装UCenter 1.6.0(简体UTF-8)
    这个程序到官方去下载吧。在网站根目录wblog1新建 ucenter 目录,解压UCenter 1.6.0,把解压得到的upload目录里的所有文件复制到刚才新建的ucenter目录里。在浏览器输入http://127.0.0.1/wblog1/ucenter/install/,安装UCenter 1.6.0。
    安装UCenter_Home_2.0_SC_UTF8(简体中文版)
    在网站根目录wblog1新建 uh目录并解压UCenter_Home_2.0_SC_UTF8,把解压得到的upload目录里的所有文件复制到刚才新建的uh目录里。在浏览器输入http://127.0.0.1/wblog1/uh/install/,安装UCenter_Home_2.0_SC_UTF8。
    需要注意的是,安装UCenter 1.6.0和UCenter_Home_2.0_SC_UTF8时顺序不能颠倒,否则无法安装。
    好了,太累了,到这里就先告一段落吧,明天继续。
    //================================================
    由以上我们安装完了WBlog3.1.2、UCenter_Home_2.0_SC_UTF8和UCenter 1.6.0三个程序后。接下来接着上一篇讲。找到下载的UCenter 1.6.0,把 advanced 目录里面的
    uc_client 和 examples下面的api 文件夹复制到网站根目录wblog1下,和ThinkPHP在同一目录。找到项目W3note的配置文件夹wblog1/ Conf/,在其新建一个UCenter的配置文件 config_ucenter.php ,然后在WBlog1\W3note\Lib\ORG目录下新建一个UCenter的通讯处理类文件UcService.class.php,我们先不要管文件里面写什么代码,后面将会讲到。好了到这里已经把后面要操作的目录和文件都布局好了。为了理清目录和文件之间的层次关系,我把目录和文件制成目录树列出来:
    wblog1根目录
    |  –  index.php//前台入口文件
    |  –  admin.php
    |  –  W3note//前台项目
    |           |  – Lib
    |           |       |  – ORG
    |           |       |       |  –UcService.class.php //UCenter的通讯处理类文件
    |           |  – Conf//W3note项目的配置目录
    |           |       |  –config_ucenter.php //UCenter的配置文件
    |           |
    |  –  Admin
    |  –  ThinkPHP //thinkphp3.1.2核心包和一些扩展
    |  –  install 
    |  –  api  
    |       | –  uc.php 
    |
    |  –  uc_client 
    |  –  ucenter 
    |  –  uh  
    这样我们就可以一目了然了。
    现在开始api目录里面的uc.php 配置了,首先打开这个文件,找到36行的位置这一行代码
    require_once DISCUZ_ROOT.'./config.inc.php';
    把'./config.inc.php'这一部分替换成'./W3note/Conf/config_ucenter.php'
    往下找还会看到几处的'./config.inc.php',按照上面的操作全部替换掉。这样做目的是把前面建的配置文件config_ucenter.php导进来。  接下来我登录http://127.0.0.1/wblog1/ucenter,在打开左边菜单“应用管理”这一项,然后添加一个新应用,这时我们发现好多东西要填!
    照着下面操作就是了。先看应用类型,因为这是我们自己开发的程序,所以就选其它吧,再看应用名称,随便填,只要不超过20字节就行了,我这里填wblog。接下来是应用的主URL,这里填网站的主页http;//127.0.0.1/wblog1,注意了,后面没有“/”。至于应用的其他URL还有应用IP这两项就跳过,不用管它了。接下来是通信密钥,就按其旁边的提示填就是了,我这里填abc123456。往下是应用的物路径,提示说默认为空,那就留空吧,还有查看个人资料页面地址也留空吧。接下来是应用接口文件名称,默认为uc.php,保持原状吧。继续往下看,标签单条显示模板还有标签模板标记说明这两项也不用理它,跳过。是否开启同步登录,选是;是否接受通知也选是吧。终于填完了,那就点击提交吧!
    还记得前面在uc.php导入的文件config_ucenter.php吗,里面可是一片空白啊,现在我们就来放些配置信息进去。刚才我们填好的信息提交后,会在提交按钮下面的“应用的UCenter配置信息”下面生成了一些配置信息,我们直接把它复制,然后粘帖到config_ucenter.php,保存。
    网上很多教程到这里就表示通信成功了,在这里我非常惊讶!因为通信并未成功!我在这里折腾了一些时间,后来仔细检了uc.php文件的代码,发现59行:
    require_once DISCUZ_ROOT.'./include/db_mysql.class.php';
    我在布局的目录中始终找不到db_mysql.class.php,后来发现db_mysql.class.php存UCenter_1.6.0_SC_UTF8\advanced\examples\include目录中,这就是问题所在!因为我们之前复制的只是UCenter_1.6.0_SC_UTF8\advanced\examples\中的api文件。
    解决这一问题的办法就是把上面的代码修改为
    require_once DISCUZ_ROOT.'./uc_client/lib/db.class.php';
    导入的数据库类文件变了,那么我们也要对其所涉及的内容作相应的修改,在uc.php59行的下面如
    $GLOBALS['db'] = new dbstuff; 
    $GLOBALS['db']->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset); 
    $GLOBALS['tablepre'] = $tablepre;
    修改为
    $GLOBALS['db'] = new ucclient_db; 
    $GLOBALS['db']->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, UC_DBNAME, UC_DBCONNECT, true, UC_DBCHARSET); 
    $GLOBALS['tablepre'] = UC_DBTABLEPRE;//关键
    上面数据库的链接信息的静态变量来自config_ucenter.php。
    好了,我们回到后台ucenter刷新一下页面,发现什么---通信成功了!
    如果按上面的操作还未通信成功的,请留言,有空我会回复!
    //===============================================================
    由以上的操作已经实现了通讯成功了!那么接下来我们的目标:
    在thinkphp中会员注册成功时,UCenter Home也同时注册成功。
    首先在项目W3note入口文件index.php配置一个常量
    define('WBLOG_ROOT_PATH', rtrim(dirname(__FILE__), '/\\') . DIRECTORY_SEPARATOR);//物理根目录
    常量WBLOG_ROOT_PATH是网站根目录wblog1的物理根目录,在我本地服务器打印输出:
    D:\phpsever\apache2\htdocs\wblog1\
    有必要在这里强调一下,理解WBLOG_ROOT_PATH很重要,因为在调试过程中路径最容易出错。
    还记得前面我们建的UcService.class.php 文件吗?如果忘记了请看一下前面的目录树。打开UcService.class.php文件,新建一个类UcService,然后写一个构造方法导入W3note/Conf/config_ucenter.php和uc_client/client.php两个文件。代码:
    class UcService{   
    public function __construct(){   
    include_once(WBLOG_ROOT_PATH . 'W3note/Conf/config_ucenter.php');   
    include_once(WBLOG_ROOT_PATH . 'uc_client/client.php');   
    }
    接下来我们写一个会员注册方法register,如
    public function register($username, $password, $email){}
    方法体放什么代码呢?其实很简单,因为UCenter的开发文档已经为我们准备好了!
    找到之前下载的UCenter_1.6.0_SC_UTF8,用浏览器打开UCenter_1.6.0_SC_UTF\advanced\document\index.htm,然后在左边的菜单栏找到“用户接口”,看到用户注册示例 (PHP),把其下的代码复制过来。如下
    /**   
    * 会员注册   
    */
    public function register($username, $password, $email){   
    $uid = uc_user_register($username, $password, $email);//UCenter的注册验证函数   
    if($uid <= 0) {   
    if($uid == -1) {   
    return '用户名不合法';   
    } elseif($uid == -2) {   
    return '包含不允许注册的词语';   
    } elseif($uid == -3) {   
    return '用户名已经存在';   
    } elseif($uid == -4) {   
    return 'Email 格式有误';   
    } elseif($uid == -5) {   
    return 'Email 不允许注册';   
    } elseif($uid == -6) {   
    return '该 Email 已经被注册';   
    } else {   
    return '未定义';   
    }   
    } else {   
    return intval($uid);//返回一个非负数   
    }   
    }   
    }
    这个注册方法register的作用是,在wblog1的会员注册中成功注册一个会员时,也会成功注册UCenter Home的会员中心中。UCenter的注册方法我们在上面已经写好了,现在回到thinkphp。我们在前台W3note项目的控制器MemberAction写一个注册方法,代码如下:
    /*   
    用户名:$username,    
    密码:$password,    
    邮箱:$email   
    */
    public function addmember(){    
    if($this->isPost()){   
    $username = $_POST['username'];   
    $email = $_POST['email'];   
    $password = trim($_POST['password']);   
    import("@.ORG.UcService");//导入UcService.class.php类   
    $ucService = new UcService;//实例化UcService类   
    $uid = $ucService->register($username, $password, $email);//注册到UCenter   
    if($uid){//如果上面注册成功将返回一个int类型的数字   
    $M = D('Member');   
    if ($vo = $M->create()) {   
    if ($M->add()) {   
    $this->success('注册成功!');   
    } else {   
    $this->error('注册失败!');   
    }   
    } else {   
    $this->error();   
    }   
    }else{   
    exit($uid);   
    }   
    }else{   
    $this->error('非法数据!');   
    }   
    }
    我们在thinkphp会员注册页面注册一个帐号,提交表单后,查看wblog1和UCenter的会员数据表,发现两张表都存相同的帐号,说明同步注册已经成功了!
叶景网络,网络推广,网站建设
特别推荐RECOMMEND
搜索引擎网站关键词seo优化的意义
视频推广怎么做
网站seo优化怎么做关键词排上首页?
SEO介绍什么叫搜索引擎网站关键词优化
seo优化怎样做提升关键词排名
热点图文Hot
PHP通过soap调用.net接口asmx文件 PHP通过soap调用.ne
PHP开发环境配置 PHP开发环境配置
wamp集成环境的虚拟域名配置方法 wamp集成环境的虚拟
wamp独立安装配置 wamp独立安装配置
关注排行RANKING
1

PHP通过soap调用.net接口asmx文件

PHP通过soap调用.net接口asmx文件 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

2

PHP开发环境配置

PHP开发环境配置 下载PHP安装程序,并解压缩。(下载页面为http: www php net downloads php,下...

3

wamp集成环境的虚拟域名配置方法

wamp集成环境的虚拟域名配置方法 最近,发现身边很多人用wamp集成环境,这个虽然比较快捷,一步到位,但是只能访...

4

wamp独立安装配置

wamp独立安装配置 apache 中的 httpd conf LoadModule php5_module "D: lamp php5 php5apache2_2 dll " 加载模块并开启

5

php 获取今天明天昨天时间戳

php 获取今天明天昨天时间戳 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

6

PHP获取服务器信息 MySql版本和浏览器信息

PHP获取服务器信息 MySql版本和浏览器信息 1、$_SESSION[ PHP_SELF ] -- 获取当前正在执行脚本的文件名 2...

7

smarty 截取字符串函数 truncate的用法

smarty 截取字符串函数 truncate的用法 smarty truncate 截取字符串,从字符串开始处截取某长度的字符,默认的长度为8...

8

php编程常用函数方法等

php编程常用函数方法等 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网站...

9

如何让ThinkPHP的模板引擎达到最佳效率

如何让ThinkPHP的模板引擎达到最佳效率 默认情况下ThinkPHP框架系统默认使用的模板引擎是内置模板引擎。内置模板引擎支持模板文...