Во-первых, 301 не является «ошибкой» как таковой , это означает, что вы перенаправлены.Вам необходимо проанализировать заголовки ответа, принять значение заголовка Location:
(которое требуется для спецификации протокола HTTP, присутствующего в ответе на перенаправление) и запросить также URI.
Во-вторых, вышеприведенная функция выполняетПо-видимому, не обеспечивает никакой поддержки для доступа к URL-адресам HTTPS.Для этого вам нужно установить расширение OpenSSL для вашего экземпляра PHP, и вам также нужно как-то его назвать.Вы можете использовать вышеупомянутую функцию, передавая ssl://
или tls://
перед адресом в параметре $ip
, но вы не можете просто передать IP.
В-третьих, обычным способомделать что-то подобное с расширением cURL .Вы могли бы сделать что-то вроде этого:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://pre.corrupt-net.org/search.php?search=Lasse_Stefanz-Bara_Du-SE-CD-FLAC-1995-LoKET'); // Set the URL
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Get the result from the execution
if (($result = curl_exec($ch)) === FALSE) { // Execute the request
echo "cURL failed! Error: ".curl_error($ch);
} else {
echo "Success! Result: $result";
}
curl_close($ch);
В качестве альтернативы, если cURL недоступен или вы по какой-то причине не хотите его использовать, вы можете использовать мой класс HTTPRequest , который совместим с PHP4 и не требует никаких расширений (кроме OpenSSL для запросов HTTPS).Документировано (ish) в комментариях вверху скрипта.Вы могли бы сделать что-то вроде этого:
$request = new httprequest(); // Create an object
// Set the request URL
if (!$request->setRequestURL('https://pre.corrupt-net.org/search.php?search=Lasse_Stefanz-Bara_Du-SE-CD-FLAC-1995-LoKET')) echo "Failed! Error: ".$request->getLastErrorStr()."<br>\r\n";
// Send the request
if (!$request->sendRequest()) echo "Failed! Error: ".$request->getLastErrorStr()."<br>\r\n";
echo "Success! Result: ".$request->getResponseBodyData(TRUE);
В дополнение к этому, многие менеджеры / провайдеры Scene PreDB не слишком заинтересованы в автоматическом очистке, и вы можете быть забанены ...