另类随机图片API

发布于 2018-04-30  1.04k 次阅读


前言:最近一段时间(前一段时间)仿佛随机图片API很火,在介里,我就来一个泥萌没有玩过的船新版本吧。

 

简单的自我介绍一下,这是根据上一篇文章BING的每日图片来实现的。

用到的内容除了上一篇文章的代码还有    PHP中的随机数!

 

无效的PHP代码(正确可用的在下面)

<?php
//获取源码前获取随机数
$rand = rand(0,999);
//获取源码  这里用的是 file get contents函数
$str = file_get_contents('http://www.bing.com/HPImageArchive.aspx?format=js&idx={$rand}&n=1');
//解析JSON
$array = json_decode($str);
//取出url
$imgurl = $array->{"images"}[0]->{"url"};
//衔接
echo "<img src='http://www.bing.com{$imgurl}' alt='' class='bg'/>";
?>

 

 

踩坑记录

根据上面代码访问发现输出图片内容全是一样的,起初以为Rand()有问题。Dump $rand后发现生成随机数正常。

正常那就Dump下一句,怀疑$str的内容有问题。问题就出现在这,返回的内容一直都是一样的。以为是file_get_contents()有问题,于是替换成CURL。替换后发现。。更慢了??这不是重点,重点是返回内容还是一样。于是手动访问发现内容的确是一样,然后试着将idx参数改回0(是数字零!)发现返回内容正常。

最终从0到7的试过去,发现大于7后返回的内容都是一样的,于是。。你懂的。

 

最终代码

<?php
//获取源码前获取随机数
$rand = rand(0,7);
//获取源码  这里用的是 file get contents函数
$str = file_get_contents("http://www.bing.com/HPImageArchive.aspx?format=js&idx={$rand}&n=1");
//解析JSON
$array = json_decode($str);
//取出url
$imgurl = $array->{"images"}[0]->{"url"};
//衔接
header("Location: http://www.bing.com{$imgurl}");   
//确保重定向后,后续代码不会被执行   
exit;  
?>