Reputation: 2964
I have programmed a simple content-user, that uses file_get_contents, but unfortunately for my IP the site now gives a 302 error that forwards to an image. For all other users the normal site is viewable.
How do I rewrite the get_contents so it will just download the content of the website and not actually follow the redirect?
$html = file_get_contents("http://www.site.net/");
Upvotes: 3
Views: 9288
Reputation: 6966
I encountered such a problem accessing Google Drive content via the direct link.
NICE WAY: With the code below it worked again:
//Any google url. Thsi example is fake for Google Drive direct link.
$url = "https://drive.google.com/uc?id=0BxQKKJYjuNElbFBNUlBndmVHHAj";
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$html = curl_exec($ch);
curl_close($ch);
echo $html;
I tested it today, 03/19/2018
WRONG WAY: After calling file_get_contents returned 302 Moved temporarily
//Any google url. Thsi example is fake for Google Drive direct link.
$url = "https://drive.google.com/uc?id=0BxQKKJYjuNElbFBNUlBndmVHHAj";
$html = file_get_contents($url);
echo $html; //print none because error 302.
Upvotes: -1
Reputation: 237865
You need to create a context:
$context = stream_context_create(
array (
'http' => array (
'follow_location' => false // don't follow redirects
)
)
);
$html = file_get_contents('http://www.site.net/', false, $context);
See the manual:
With that said, it's highly likely that there is no content left on the page. It's not impossible to serve a 302
header and serve an HTTP body as well, but it's decidedly unorthodox.
Upvotes: 21
Reputation: 22099
There is no content there. The redirect happens in the HTTP response before any content would be sent.
The server decides what you get to see (or not).
Upvotes: -1