| Ucenter客户端开发文件 client/model/app.php中方法 get_apps 方法如下:
 function get_apps($col = '*', $where = '') {
 $arr = $this->db->fetch_all("SELECT $col FROM ".UC_DBTABLEPRE."applications".($where ? ' WHERE '.$where : ''), 'appid');
 foreach($arr as $k => $v) {
 isset($v['extra']) && !empty($v['extra']) && $v['extra'] = unserialize($v['extra']);//如果extra 字段有值,就会unserialize一值
 unset($v['authkey']);
 $arr[$k] = $v;
 }
 return $arr;
 }
 client/control/app.php中有一个调用
 function onls() {
 $this->init_input();
 $applist = $_ENV['app']->get_apps('appid, type, name, url, tagtemplates, viewprourl, synlogin');
 $applist2 = array();
 /*注意这个地方的$this->unserialize($app['tagtemplates']),下面有一个比较*/
 foreach($applist as $key => $app) {
 $app['tagtemplates'] = $this->unserialize($app['tagtemplates']);
 $applist2[$app['appid']] = $app;
 }
 return $applist2;
 }
 现在看下client/control/cache.php 中的方法 onupdate()
 function onupdate($arr) {
 $this->load("cache");
 $_ENV['cache']->updatedata();
 }
 ,转到client/model/cache.php 中updatedate()代码如下
 function _get_apps() {
 $this->base->load('app');
 $apps = $_ENV['app']->get_apps();//在这个函数中,好像extra字段,已经unserialize 一次了,
 $apps2 = array();
 if(is_array($apps)) {
 foreach($apps as $v) {
 $v['extra'] = unserialize($v['extra']);//注意这个地方,unserialize了一次,好像这是第二次,是不是有问题?
 $apps2[$v['appid']] = $v;
 }
 /*应该改成
 isset($v['extra']) && !empty($v['extra']) && $v['extra'] = unserialize($v['extra']);
 $arr[$k] = $v;
 */
 }
 return $apps2;
 }
 问题在注释中已经提交,不是这是不是BUG~~
 |