Re: cURL and response code 302 [message #182111 is a reply to message #182108] |
Wed, 10 July 2013 22:12 |
Arno Welzel
Messages: 317 Registered: October 2011
Karma:
|
Senior Member |
|
|
bill, 2013-07-10 17:09:
[...]
> using:
>
> function curl_getNoFollow($url, array $get = NULL, array $options
> = array() ){
[...]
> I get:
> url: http://www.mydomain.com/login/login.cfm, http: 302
>
> note the lack of information about the refer to address, which I
> need so I can follow.
A quick & dirty example without any error handling etc. - just to get
the idea:
<?php
$options = array(
CURLOPT_URL => 'http://mydomain.example/foobar',
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_RETURNTRANSFER => true
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
$resultcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
if($resultcode == 302)
$redirect = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
else
$redirect = '';
echo 'Effective URL: '.$url.'<br/>';
echo 'HTTP result code: '.$resultcode.'<br/>';
echo 'Redirection: '.$redirect.'<br/>';
curl_close($ch);
?>
See in action at <http://arnowelzel.de/samples/curl-sample.php>
CURLINFO_REDIRECT_URL is not in the documentation but it was added in
PHP 5.3.7. Also see <http://php.net/ChangeLog-5.php>.
If this does not work for you (e.g. because you have an older PHP
version), you have to extract the location header "manually".
HTH
--
Arno Welzel
http://arnowelzel.de
http://de-rec-fahrrad.de
|
|
|