【问题标题】:Checking if pictures exist on separate domain检查图片是否存在于单独的域中
【发布时间】:2011-05-04 07:19:07
【问题描述】:

所以我正在一个网站上工作,其中目录的图像列在一个单独的域中,而不是具有该目录的数据库/网站。它的设置方式是,家庭姓氏加上配偶的首字母组成图像名称,这样......

John and Kathy Doe

将对应于图像:

doe-jk.jpg

我想要做的是在显示数据库中每个列表的逻辑中,它检查该图像是否存在于另一个域中,如下所示:

$picture_name = "http://totally-different-domain.com/".$file_name;
    if ( isset( $picture_name ) )
    {
       echo $picture_name;
    }
    else
    {
       echo 'empty.jpg';
    }

当文件存在于不同的域中时,有人知道我该怎么做吗?

编辑:我所说的不同域是指脚本存在于http://domain1.com/directory.php,并且directory.php 中包含的图像位于http://totally-different-domain.com/doe-jk.jpg

【问题讨论】:

    标签: php mysql image cross-domain


    【解决方案1】:

    is_readable() 检查存在性和可读性。

    $picture_name = "http://totally-different-domain.com/".$file_name;
    if (!is_readable($picture_name)) {
        $picture_name = 'empty.jpg';
    }
    echo $picture_name;
    

    【讨论】:

    • 请注意,根据is-readable#61293is-readable 即使对于 HTTP 错误(例如 500、403 等)也可能返回 true。我尚未对此进行检查,但您可能需要使用带有状态代码白名单(2**、301 等)而不是黑名单(404)的@jhchen 解决方案。
    【解决方案2】:

    您可以使用 get_headers 函数检查文件是否存在于另一个域中,并检查您是否收到 404。例如。

    $url = 'http://totally-different-domain.com/doe-jk.jpg'
    $response = get_headers($url, 1);
    $file_exists = (strpos($response[0], "404") === false);
    

    【讨论】:

    • 这似乎不适用于目录:即使目录存在,响应也是 404。
    猜你喜欢
    • 2014-05-22
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多