Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

ucenter 程序问题

[复制链接]
song3304 发表于 2011-5-5 09:45:11 | 显示全部楼层 |阅读模式
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~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-2-24 11:38 , Processed in 0.021781 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表