这个问题是我之前提到的另一个话题,没有人能够提供帮助:
所以现在我试图通过PHP WGET相同的网站,但我相信我需要对网址进行编码。当我尝试以下命令时,没有任何内容被下载:
<?php
exec("wget --header='Host: www.glturk.com' http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
?>
我收到一个下载的空文件:&#39; ajax.aspx-stream = live&#39;,这表明网址可能无法正常读取?
如何编码该链接?我也试过了:
<?php
$encoded = urlencode("http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
exec("wget --header='Host: www.glturk.com' $encoded");
?>
有什么想法吗?我一直在下载空文件?谢谢你的帮助!
答案 0 :(得分:0)
curl
$url = "http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
答案 1 :(得分:0)
字符?
和&
对shell有特殊含义,因此您需要引用该网址。
exec("wget --header='Host: www.glturk.com' 'http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR'");
转义shell参数的正确函数是escapeshellarg
,而不是urlencode
。所以你也可以这样做:
$encoded = escapeshellarg("http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
exec("wget --header='Host: www.glturk.com' $encoded");