急!急!急!高手看看这源码哪里错了?

2016-07-07 16:48 来源:www.chinab4c.com 作者:ecshop专家

Warning: unserialize() expects parameter 1 to be string, array given in /home/mxxcc/public_html/uc_client/model/cache.php on line 89
这是首次打开新店在页面上方出现的,刷新后就没有了。
下边是这个文件的源码:
<?php

/*
[UCenter] (C)2001-2009 Comsenz Inc.
This is NOT a freeware, use is subject to license terms

$Id: cache.php 846 2008-12-08 05:37:05Z zhaoxiongfei $
*/

!defined('IN_UC') && exit('Access Denied');

if(!function_exists('file_put_contents')) {
function file_put_contents($filename, $s) {
$fp = @fopen($filename, 'w');
@fwrite($fp, $s);
@fclose($fp);
}
}

class cachemodel {

var $db;
var $base;
var $map;

function __construct(&$base) {
$this->cachemodel($base);
}

function cachemodel(&$base) {
$this->base = $base;
$this->db = $base->db;
$this->map = array(
'settings' => array('settings'),
'badwords' => array('badwords'),
'apps' => array('apps')
);
}

//public
function updatedata($cachefile = '') {
if($cachefile) {
foreach((array)$this->map[$cachefile] as $modules) {
$s = "<?php\r\n";
foreach((array)$modules as $m) {
$method = "_get_$m";
$s .= '$_CACHE[\''.$m.'\'] = '.var_export($this->$method(), TRUE).";\r\n";
}
$s .= "\r\n?>";
@file_put_contents(UC_DATADIR."./cache/$cachefile.php", $s);
}
} else {
foreach((array)$this->map as $file => $modules) {
$s = "<?php\r\n";
foreach($modules as $m) {
$method = "_get_$m";
$s .= '$_CACHE[\''.$m.'\'] = '.var_export($this->$method(), TRUE).";\r\n";
}
$s .= "\r\n?>";
@file_put_contents(UC_DATADIR."./cache/$file.php", $s);
}
}
}

function updatetpl() {

}

//private
function _get_badwords() {
$data = $this->db->fetch_all("SELECT * FROM ".UC_DBTABLEPRE."badwords");
$return = array();
if(is_array($data)) {
foreach($data as $k => $v) {
$return['findpattern'][$k] = $v['findpattern'];
$return['replace'][$k] = $v['replacement'];
}
}
return $return;
}

//private
function _get_apps() {
$this->base->load('app');
$apps = $_ENV['app']->get_apps();
$apps2 = array();
if(is_array($apps)) {
foreach($apps as $v) {
$v['extra'] = unserialize($v['extra']);
$apps2[$v['appid']] = $v;
}
}
return $apps2;
}

function _get_settings() {
return $this->base->get_setting();
}

}

?>

回答:
源程序的小问题,修改 _get_app()方法
function _get_apps() {
$this->base->load('app');
$apps = $_ENV['app']->get_apps();
$apps2 = array();
if(is_array($apps)) {
foreach($apps as $v) {
if(!is_array($v['extra'])){
$v['extra'] = unserialize($v['extra']);
}

$apps2[$v['appid']] = $v;
}
}
return $apps2;
}