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

Kar*_*rem 2 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
Run Code Online (Sandbox Code Playgroud)

我这样做是为了将图像存储在一个独立的图像服务器上.该链接正在将图像添加到队列中.

如何正确执行此链接?

到目前为止我这样做了:

$link = 'http://77.33.xx.xx/s/addtoqueue.php?action=store&filename='.$filename.'&link=$link;
Run Code Online (Sandbox Code Playgroud)

但不知道如何运行这个?

顺便说一下,urlencode()和urldecode()的链接是否很聪明?

Tre*_*non 5

我不会自己构建查询字符串,但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);
Run Code Online (Sandbox Code Playgroud)

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

<?php
$ch = curl_init($link);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

其他选项包括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);
Run Code Online (Sandbox Code Playgroud)

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

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

有关卷曲选项的更多信息,您可以使用结帐curl_setopt()手册页.