Sample code for 30+ languages & platforms
PHP ActiveX

Manually Follow HTTP Redirects

See more HTTP Examples

Demonstrates how to manually follow redirects for an HTTP GET.

Chilkat PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 0;

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

$http = new COM("Chilkat.Http");

// The FollowRedirects property controls whether redirects
// are automatically followed.  The default behavior is to
// automatically follow redirects.

// Explicitly set FollowRedirects so that redirects are NOT automatically taken:
$http->FollowRedirects = 0;

$resp = new COM("Chilkat.HttpResponse");
$success = $http->HttpNoBody('GET','http://yandex.ru/',$resp);
if ($success == 0) {
    print $http->LastErrorText . "\n";
    exit;
}

$status = $resp->StatusCode;
print 'HTTP Response Status: ' . $status . "\n";

// The FinalRedirectUrl property will contain the redirect URL
// If FollowRedirects was equal to 1, then all of the 
// intermediate redirects (if any) would be followed until
// there were no more redirects.  However, because 
// FollowRedirects is not 1, FinalRedirectUrl contains
// the next redirect URL.

$loopCount = 0;

while (($status == 302)) {

    print 'Redirect URL: ' . $http->FinalRedirectUrl . "\n";

    $nextUrl = $http->FinalRedirectUrl;
    $success = $http->HttpNoBody('GET',$nextUrl,$resp);
    if ($success == 0) {
        print $http->LastErrorText . "\n";
        exit;
    }

    $status = $resp->StatusCode;
    print 'HTTP Response Status: ' . $status . "\n";

    // For safety, prevent infinite loops by
    // keeping a loopCount and only allows following a max 
    // of 10 redirects:
    $loopCount = $loopCount + 1;
    if ($loopCount > 10) {
        print 'Too many redirects.' . "\n";
        exit;
    }

}


?>