您好,欢迎来到95分类目录!站长微信:vip3632094
当前位置:95分类目录 » 站长资讯 » 35dir专区 » 文章详细 订阅RssFeed

增加95分类目录后台网站截图不支持外链图片显示问题

来源:本站原创 浏览:247次 时间:2025-05-26
简介:原有的逻辑: 如果传入的 $web_pic 不为空,则将图片路径拼接为 $options['site_root'] . $options['upload_dir'] . '/' . $web_pic。 如果 $web_pic 为空,则返回默认的“无图片”路径 $options['site_root'] . 'public/images/nopic.gif'。 问题:这里的逻辑会无条件地在 $

原有的函数为:

/** thumbs */
function get_webthumb(web_pic) { global options;

if (!empty($web_pic)) {
	$strurl = $options['site_root'].$options['upload_dir'].'/'.$web_pic;
} else {
	$strurl = $options['site_root'].'public/images/nopic.gif';
}

return $strurl;

}


get_webthumb() 函数用于生成网站的图片路径(缩略图或实际图片)

逻辑如果传入的 $web_pic 不为空,则将图片路径拼接为 $options['site_root'] . $options['upload_dir'] . '/' . $web_pic。

如果 $web_pic 为空,则返回默认的“无图片”路径 $options['site_root'] . 'public/images/nopic.gif'。

这里的逻辑会无条件地在 $web_pic 前添加 $options['site_root'] 和 $options['upload_dir'](可能是 /uploads/ 或类似路径)。因此,如果 $web_pic 是一个外部链接(如 https://i.uzkoo.com/logo/3/202505/6831080830b0c.png),最终路径会变成类似 /uploads/https://i.uzkoo.com/...



我们需要在 get_webthumb() 函数中添加逻辑,检查 $web_pic 是否为外部链接(以 http:// 或 https:// 开头)。如果是外部链接,则直接返回原始值,不拼接前缀路径。

修改后的 get_webthumb() 函数

/** thumbs */ function get_webthumb($web_pic) { global $options; if (!empty($web_pic)) { // 检查是否为外部链接(以http://或https://开头) if (preg_match('/^https?:///i', $web_pic)) { return $web_pic; // 外部链接直接返回,不加前缀 } // 否则拼接本地路径 $strurl = $options['site_root'] . $options['upload_dir'] . '/' . $web_pic;
    } else { $strurl = $options['site_root'] . 'public/images/nopic.gif';
    } return $strurl;
}

解释

  1. 使用正则表达式 preg_match('/^https?:///i', $web_pic) 检查 $web_pic 是否以 http:// 或 https:// 开头(i 表示不区分大小写)。
  2. 如果是外部链接,直接返回原始值 $web_pic,不拼接 $options['site_root'] 和 $options['upload_dir']。
  3. 如果不是外部链接,继续按原逻辑拼接路径,适用于本地图片。

额外优化(可选)

如果系统中存储的本地图片路径已经包含了 $options['upload_dir'](如 /uploads/),可能会导致路径重复拼接(如 /uploads//uploads/image.jpg)。为避免这种情况,可以进一步优化代码,检查 $web_pic 是否已经包含 $options['upload_dir'] 前缀:

/** thumbs */ function get_webthumb($web_pic) { global $options; if (!empty($web_pic)) { // 检查是否为外部链接(以http://或https://开头) if (preg_match('/^https?:///i', $web_pic)) { return $web_pic; // 外部链接直接返回,不加前缀 } // 检查是否已经包含 upload_dir 前缀 $upload_dir_prefix = $options['upload_dir'] . '/'; if (strpos($web_pic, $upload_dir_prefix) === 0) { $strurl = $options['site_root'] . $web_pic;
        } else { $strurl = $options['site_root'] . $upload_dir_prefix . $web_pic;
        }
    } else { $strurl = $options['site_root'] . 'public/images/nopic.gif';
    } return $strurl;
}

优化逻辑

  • 如果 $web_pic 已经以 $options['upload_dir'] . '/' 开头(例如 /uploads/),则只拼接 $options['site_root'],避免重复添加 /uploads/。
  • 否则,按原逻辑拼接完整路径。

函数路径:/www/wwwroot/95dir.com/source/module/prelink.php

拉到最下面替换掉原有的get_webthumb() 函数为上面提供的新函数

© 版权声明

💬 文章评论

正在加载评论统计...

发表评论

0/1000字符
正在加载评论...