1

除了一个问题,我已经安装了 YOURLS API 并且工作正常。无论我传递什么 URL 来缩短,它首先执行那个 URL。其中一个链接是取消订阅链接,点击它会立即取消订阅我们邮件中的会员。我正在使用带有安全令牌的无密码 API 调用,并且我正在按函数调用yourls-api.php文件。file_get_contents这是我写的代码片段:

$url = urlencode($url);
$api_url = 'http://mydomain.com/yourls/yourls-api.php?signature=593642y63x&action=shorturl&format=json&url='.$url;
$arr_output = json_decode(file_get_contents($api_url), true);   

谁能告诉我如何阻止您的 API 在缩短之前不执行 URL?

4

1 回答 1

4

抱歉,这个周末有点忙,耽搁了。

今天早上刚刚弄清楚为什么您会遇到上述问题。

在您的代码中:

$url = urlencode($url);
$api_url = 'http://mydomain.com/yourls/yourls-api.php?signature=593642y63x&action=shorturl&format=json&url='.$url;
$arr_output = json_decode(file_get_contents($api_url), true);

您正在传递以下参数:签名、操作、url 和格式,但是 YOURLS api 不计算这些参数就足够了,它还需要传递一个参数,即标题

因此,您需要修改代码以包含“title”参数以及您传递的所有其他参数,如下所示:

$url = urlencode($url);
$api_url = 'http://mydomain.com/yourls/yourls-api.php?title=swati&signature=593642y63x&action=shorturl&format=json&url='.$url;
$arr_output = json_decode(file_get_contents($api_url), true);

现在,问题出现了,为什么不传递 title 参数会导致 URL 被执行?因此,这是因为如果排除了 title 参数,则 YOURLS 会对提供的 URL 进行额外的 HTTP 调用,以从该 URL 获取标题。

祝你有美好的一天。

于 2014-06-02T06:43:02.910 回答