使用 php 运行获取链接服务器端


Running a get link serverside, with php

当我的PHP脚本运行时,我想运行一个像这样的服务器端链接:

http://77.33.xx.xx/s/addtoqueue.php?action=store&filename=myprettypicture&link=http://i69.servimg.com/u/f69/13/29/70/44/facebo10.png

我这样做是为了将图像存储在自己的单独图像服务器上。该链接正在将图像添加到队列中。

如何正确执行此链接?

到目前为止,我这样做了:

$link = 'http://77.33.xx.xx/s/addtoqueue.php?action=store&filename='.$filename.'&link=$link;

但是不知道如何运行它?

顺便说一下,urlencode() 和 urldecode() $link会很聪明吗?

我不会像那样自己构建查询字符串,而是优先使用http_build_query()

$url = 'http://77.33.xx.xx/s/addtoqueue.php';
$params = array(
    'action' => 'store',
    'filename' => $filename,
    'link' => $link,
);
$link = $url . '?' . http_build_query($params);

要实际调用URL,您可以使用许多技术,但在这种情况下,我最喜欢的是curl。以下是手册中示例的改编版本:

<?php
$ch = curl_init($link);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);

其他选项包括file_get_contents($link);是否启用了 fopen 包装器。

对评论的补充答复

<?php
$ch = curl_init($link);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$response现在包含来自 URL 的响应。从curl_exec()手册页:

成功时返回 TRUE,失败时返回 FALSE。但是,如果 CURLOPT_RETURNTRANSFER设置了选项,它将返回结果 成功,失败时为假。

有关 curl 选项的更多信息,您可以使用 curl_setopt() 手册页查看。

您可以使用 cURL 调用您的链接。http://php.net/manual/ru/book.curl.php