PHP - 从另一个URL复制图像

时间:2016-03-28 17:18:14

标签: php

好吧,我有一个简单的问题,我无法弄明白 我怎么做

$image = file_get_contents('http://www.url.com/image.jpg');
file_put_contents('/images/image.jpg', $image); //Where to save the image on your server

我可以使用html表单设置$image变量,人们可以使用$_GET[""]方法提交链接,而不必手动更改php文件中的链接?

2 个答案:

答案 0 :(得分:0)

你的表格是这样的:

<form>
    URL: <input name="url">
    <input type="submit">
</form>

然后您可以检索使用$_GET['url']提交的网址:

$image = file_get_contents($_GET['url']);
file_put_contents('/images/image.jpg', $image);

无论如何,您必须注意本地文件包含,因为如果不进一步检查,用户可以选择/etc/passwd../configuration.php等路径,如果/images/image.jpg可以查看用户,他们可以阅读不应该看到的文件。

您可能想要做的事情是检查$_GET['url]`是否是有效的网址。你可以用:

来做到这一点
if (!filter_var($_GET['url'], FILTER_VALIDATE_URL)) {
    throw new \InvalidArgumentException('The url is not valid.');
}

但这还不够,因为file:///etc/passwd是一个有效的网址。因此,请确保该网址以http://https://开头。

$isValid = false;
foreach(['http://', 'https://'] as $schema) {
    if (strpos($_GET['url'], $schema) === 0) {
        $isValid = true;
        break;
    }
}

if ($isValid && filter_var($_GET['url'], FILTER_VALIDATE_URL)) {
    $image = file_get_contents($_GET['url']);
    file_put_contents('/images/image.jpg', $image); //Where to save the image on your server
}

答案 1 :(得分:0)

@Federico

First

Second

抱歉,我没有太多时间格式化手机上的代码,因为我旅行时将所有内容上传到我的FTP服务器 很抱歉,如果一切都要局促

编辑:我看到了!在第二张照片上删除了它,所以不要担心