cURL <\/A>que quizás ya conozcas del mundo de línea de comandos en sistemas basados en Linux.<\/P>Todo lo que necesitamos hacer es imitar nuestro script para que parezca una computadora real intentando obtener una imagen de este servidor:<\/P>
<?php<\/SPAN>\nheader (<\/SPAN>'Content-Type: image\/png'<\/SPAN>)<\/SPAN>;<\/SPAN> #el contenido se devuelve como una imagen<\/SPAN>\n$url<\/SPAN> =<\/SPAN> 'https:<\/SPAN>\\/\\/placekitten.com\\/256\\/256?image='; #esta es la url base<\/SPAN>\n$ynew<\/SPAN> =<\/SPAN> rand(<\/SPAN>1,<?php<\/SPAN>
header (<\/SPAN>'Content-Type: image\/png'<\/SPAN>)<\/SPAN>;<\/SPAN>
$y<\/SPAN> =<\/SPAN> $_GET<\/SPAN>[<\/SPAN>'y'<\/SPAN>]<\/SPAN>;<\/SPAN> #el parámetro y se almacena como una cadena en la variable y<\/SPAN>
$x<\/SPAN> =<\/SPAN> $_GET<\/SPAN>[<\/SPAN>'x'<\/SPAN>]<\/SPAN>;<\/SPAN> #el parámetro x se almacena...<\/SPAN>
$z<\/SPAN> =<\/SPAN> $_GET<\/SPAN>[<\/SPAN>'z'<\/SPAN>]<\/SPAN>;<\/SPAN> #ya entiendes, ¿verdad?<\/SPAN>
$ynew<\/SPAN> =<\/SPAN>(<\/SPAN> -<\/SPAN>1<\/SPAN>*<\/SPAN>intval<\/SPAN>(<\/Span>)<\/SPAN>;<\/SPAN>
switch<\/SPAN> (<\/SPAN>$tileservice<\/SPAN>)<\/SPAN>{<\/SPAN>
case<\/SPAN> 'cat'<\/SPAN>:<\/SPAN>
$url<\/SPAN> =<\/SPAN> 'https:<\/SPAN>\/\/placekitten.com\/256\/256?image=';<\/SPAN>
$ynew<\/SPAN> =<\/SPAN> rand<\/SPAN>(<\/SPAN>1<\/SPAN>,<\/SPAN>16<\/SPAN>)<\/SPAN>;<\/SPAN>
$url<\/SPAN> .<\/SPAN>=<\/SPAN> $ynew<\/SPAN>;<\/SPAN>
#echo $url;<\/SPAN>
break<\/SPAN>;<\/SPAN>
case<\/SPAN> 'bvg'<\/SPAN>:<\/SPAN>
default<\/SPAN>:<\/SPAN>
$ynew<\/span> =<\/span>(<\/span> -<\/span>1<\/span>*<\/span>intval<\/span>(<\/span>$y<\/span>)<\/span>)<\/span>+<\/span>pow<\/span>(<\/span>2<\/span>,<\/span>intval<\/span>(<\/span>$z<\/span>)<\/span>)<\/span>-<\/span>1<\/span>;<\/span>
$Url </ Span > = </ Span > 'https: </ Span >//fahrinfo.bvg.de/tiles/base/'.$z.'/' .$x.'/' .$ynew.'.png';
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp ;& lt ; span Class = "Keyword Token" > break </ span >< span Class = "Punctuation Token" > ; </ span >
} </ span >< span Class = "Punctuation Token" > ; </ span >& nbsp ;& nbsp ;& nbsp ;& nbsp ;
$ch </ span > < span Class = "Operator Token" >= </ span > < span Class = "Token Function" > curl_init </ span >< span Class = "Punctuation Token" > ( </ span >< span Class = "Punctuation Token" > ) </ span >< span Class = "Punctuation Token" > ; </ span >
curl_setopt </ span >< span Class = "Punctuation Token" > ( </ span >< span Class = "Variable Token" > $ch </ span >< span Class = "Punctuation Token" > , </ span > < span Class = "Token Constant" > CURLOPT_SSL_VERIFYPEER </ span >< span Class = "Punctuation Token" > , </ span > < span Class = "Token Boolean" > false </ span >< span Class = "Punctuation Token" > ) </ span >< span Class = "Punctuation Token" > ; </ span >
curl_setopt </ span >< span Class = "Punctuation Token" > ( </ span >< span Class = "Variable Token" > $ch </ span >< span Class = "Punctuation Token" > , </ span > < span Class = "Token Constant" > CURLOPT_FRESH_CONNECT </ span >< span Class = "Punctuation Token" > , </ span > < Span Class= "Token Constant" > TRUE </ Span >< Span Class= "Punctuation Token" > )</ Span >< Span Class= "Punctuation Token" >;</ Span>
curl_setopt</ Span >< Span Class= "Punctuation Token" >(</ Span >< Span Class= "Variable Token" > $ch</ Span >< Span Class= "Punctuation Token">,</ Span >< Span Class= "Token Constant">CURLOPT_URL</ Span >< Span Class= "Punctuation Token",></ Span> class="punctuation token">['y'];
$x = $_GET['x'];
$z = $_GET['z'];
$server = array();
switch ($tileservice){
case 'cat':
#$server[] = 'https://placekitten.com/256/256';
$url = 'https://placekitten.com/256/256?image=';
$ynew = rand(1,16);
$url .= $ynew;
#echo $url;
break;
case 'bvg':
default:
$ynew =( -1*intval($y))+pow(2, intval($z)) - 1;
< span clasS = "variablE toKen" >$url</Span> < span clasS = "operatOr toKen" >=</Span> 'https\n\n\n\n\n\n\n\n $ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
$data = curl_exec($ch);
}
curl_close($ch);
echo $data;
>(<\/SPAN> -<\/SPAN>1<\/SPAN>*<\/SPAN>intval<\/SPAN>(<\/SPAN>$y<\/SPAN>)<\/SPAN>)<\/SPAN>+<\/SPAN>pow<\/SPAN>(<\/SPAN>2<\/SPAN>,<\/SPAN>intval<\/SPAN>(<\/SPAN>$z<\/SPAN>)<\/SPAN>)<\/SPAN>-<\/SPAN>1<\/SPAN>;<\/SPAN>
$url<\/SPAN> =<\/SPAN> 'https:<\/SPAN>\/\/fahrinfo.bvg.de\/tiles\/base\/' .$z.'\/' .$x.'\/' .$ynew.'.png';<\/SPAN>
break<\/SPAN>;<\/SPAN>
}<\/SPAN>;<\/SPAN>
$ch<\/SPAN> =<\/SPAN> curl_init<\/Span>();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, token">)<\/SPAN>;<\/SPAN>
}<\/SPAN>
curl_close<\/SPAN>(<\/SPAN>$ch<\/SPAN>)<\/SPAN>;<\/SPAN>
$im<\/SPAN> =<\/SPAN> imagecreatefromstring<\/SPAN>(<\/SPAN>$data<\/SPAN>)<\/SPAN>;<\/SPAN>
$stamp<\/SPAN> =<\/SPAN> imagecreatetruecolor<\/SPAN>(<\/SPAN>100<\/SPAN>,<\/SPAN> 30<\/SPAN>)<\/SPAN>;<\/SPAN>
imagestring<\/SPAN>(<\/SPAN>$stamp<\/SPAN>,<\/SPAN> 10<\/SPAN>,<\/SPAN> 10<\/SPAN>,<\/SPAN> 5<\/SPAN>,<\/SPAN> 'watermark'<\/SPAN>,<\/SPAN> 0xff0000<\/SPAN>)<\/SPAN>;<\/SPAN>
// establecer bordes y obtener tamaños<\/span>
$marge_right<\/span> =<\/span> 100<\/span>;<\/span>
$marge_bottom<\/span> =<\/span> 100<\/span>;<\/span>
$sx<\/span> =<\/span> imagesx<\/span>(<\/span>$stamp<\/span>)<\/span>;<\/span>
$sy<\/span> =<\/span> imagesy<\/span>(<\/span>$stamp<\/span>)<\/span>;<\/span>
// copiar la marca de agua con una transparencia del 50 en la imagen original<\/span>
imagecopymerge<\/span>(<\/span>$im<\/span>, $stamp<\/span>, imagesx<\/span>($im<\/span>) - $sx<\/span> - $marge_right<\/span>, imagesy<\/span>($im<\/span>) - $sy<\/span> - $marge_bottom<\/span>, 0, 0, imagesx<\/span>($stamp<\/span>), imagesy<\/span>($stamp<\/span>), 50)<\/><\/>;
header\</ span >< spanclass=\" punctuationtoken\" > ( \ </ span > 'Content-Type: image/png' \ </ span > ) ;