A-A+

ecshop杂志编辑器保存路径bug修改

2016年01月03日 PHP开源系统 暂无评论 阅读 11 views 次

最近在使用ecshop杂志管理发送促销邮件的功能,这个功能十分的强大,但使用的频率越大,就会越发越有问题,这不,刚发现了一个小小的 bug,得赶紧更改过来,就是每次编辑内容保存的时候,都会默认的将 html 邮件内容的 src= 替换为 src=http://.$_SERVER["HTTP_HOST"],很显然,ecshop 使用了一个 .$_SERVER["HTTP_HOST"] 的路径函数,也就是又新增加了一个站点路径,所以导致每次保存都会新加了个路径,这样吧,下面夏日博客举个例子来说明一下。

当我们第一次在 html 邮件中保存一个图片的时候路径为:

src=”https://www.xiariboke.com/test.jpg”

当第二次保存 html 邮件中图片的时候,路径就变为了如下:

src=”https://www.xiariboke.comhttps://www.xiariboke.comhttps://www.xiariboke.com/test.jpg”

这就是小的 bug了,凭白无故的多了怎么一个路径,这个一定是要去掉的,实际就是去掉 $_SERVER["HTTP_HOST"] 这个函数了。

打开 /admin/magazine_list.php 文件,查找如下的代码:

elseif ($_POST['step'] == 2)
{
$magazine_name = trim($_POST['magazine_name']);
$magazine_content = trim($_POST['magazine_content']);
$magazine_content = str_replace('src=\"','src=\"http://'.$_SERVER['HTTP_HOST'],$magazine_content);
$time = gmtime();
$db->query("UPDATE " . $ecs->table('mail_templates') . " SET is_html = 1, template_subject = '$magazine_name', template_content = '$magazine_content', last_modify = '$time' WHERE type = 'magazine' AND template_id = '$id'");
$links[] = array('text' => $_LANG['magazine_list'], 'href' => 'magazine_list.php?act=list');
sys_msg($_LANG['edit_ok'], 0, $links);
}

注释或者删除掉代码中 $magazine_content = str_replace(‘src=\”‘,’src=\”http://’.$_SERVER['HTTP_HOST'],$magazine_content); 这一句,也就是修改成如下的完整代码即可:

elseif ($_POST['step'] == 2)
{
$magazine_name = trim($_POST['magazine_name']);
$magazine_content = trim($_POST['magazine_content']);
//$magazine_content = str_replace('src=\"','src=\"http://'.$_SERVER['HTTP_HOST'],$magazine_content); //禁止保存时修改路径
$time = gmtime();
$db->query("UPDATE " . $ecs->table('mail_templates') . " SET is_html = 1, template_subject = '$magazine_name', template_content = '$magazine_content', last_modify = '$time' WHERE type = 'magazine' AND template_id = '$id'");
$links[] = array('text' => $_LANG['magazine_list'], 'href' => 'magazine_list.php?act=list');
sys_msg($_LANG['edit_ok'], 0, $links);
}

好了,这个时候再去测试一下,第一次保存和第二次保存的格式路径应该是一样的。

标签:

给我留言