ecshop杂志管理发送促销邮件的功能,这个功能十分的强大,但使用的频率越大,就会越发越有问题,这不,刚发现了一个小小的 bug,得赶紧更改过来,就是每次编辑内容保存的时候,都会默认的将 html 邮件内容的 src= 替换为 src=http://.$_SERVER["HTTP_HOST"],很显然,ecshop 使用了一个 .$_SERVER["HTTP_HOST"] 的路径函数,也就是又新增加了一个站点路径,所以导致每次保存都会新加了个路径,这样吧,下面夏日博客举个例子来说明一下。
当我们第一次在 html 邮件中保存一个图片的时候路径为:
src=”https://www.ldhost.cn/help/test.jpg”
当第二次保存 html 邮件中图片的时候,路径就变为了如下:
src=”http://www.ldhost.cnhttp://www.ldhost.cnhttps://www.ldhost.cn/help/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);
}
好了,这个时候再去测试一下,第一次保存和第二次保存的格式路径应该是一样的。
(责任编辑:好模板) |