destoon广告模块图片丢失解决

By | 2013/03/14

之前通过destoon添加新的广告类型的方式,添加了很多个性化的广告模块,比较好的满足了运营需要。可是后来发现一个问题,就是广告图片偶尔会丢失。这个可真是麻烦,也不太清楚是destoon造成的还是系统有问题,而且有时候内容页的图片也偶尔丢失,所以就没太在意,只能少了图片就人工添加上了。

在测试一个新的广告类型时,使用了两个图片上传,发现总是会有一张图片显示404。想到以前图片丢失的情况,看样子是自己开发的时候,没有注意到广告系统添加广告内容时使用的函数,可能某个函数会把之前上传的图片删除掉。有了方向就好办了,开始查找相关代码,最后在/module/extend/ad.class.php的set_ad函数中发现了相关代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	function set_ad($ad) {
		global $DT_TIME, $_username;
		if(!$this->aid) $ad['addtime'] = $DT_TIME;
		$ad['edittime'] = $DT_TIME;
		$ad['editor'] = $_username;
		$ad['fromtime'] = strtotime($ad['fromtime'].' 0:0:0');
		$ad['totime'] = strtotime($ad['totime'].' 23:59:59');
		$ad['username'] or $ad['username'] = $_username;
		$ad['url'] = '';
		if($ad['typeid'] == 2) {
			$ad['url'] = $ad['text_url'];
		} else if($ad['typeid'] == 3 || $ad['typeid'] == 5) {
			$ad['url'] = $ad['image_url'];
		} else if($ad['typeid'] == 4) {
			$ad['url'] = $ad['flash_url'];
		}
                //下面就是清理上传内容的
		clear_upload($ad['image_src'].$ad['flash_src'].$ad['code']);
		return $ad;
	}

clear_upload函数的作用就是保留当前上传中包含在参数里面的内容,可以看到只保留了官方用到的变量,而我们自己发明的变量是肯定不在里面的,这样就导致了广告的丢失。修改方法也很简单,里面添加上咱们自己的变量就好了,只是这个问题点,比较难发现。

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据