php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #39095 'max_redirects' context options doesn't work when value is 1
Submitted: 2006-10-09 14:05 UTC Modified: 2006-10-10 08:10 UTC
From: shen dot shenstone at gmail dot com Assigned:
Status: Not a bug Package: Streams related
PHP Version: 5.1.6 OS: Windows XP Pro SP2
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: shen dot shenstone at gmail dot com
New email:
PHP Version: OS:

 

 [2006-10-09 14:05 UTC] shen dot shenstone at gmail dot com
Description:
------------
I resubmit this issus because when i add comment to old post, it always return that "Please do not SPAM our bug system."

Three Scripts for Test
======================
re1.php
-------
<?php
header('Location: re2.php');
?>

re2.php
-------
<?php
header('Location: re3.php');
?>

re3.php
-------
<?php
echo 'reached.';
?>

TEST SCRIPT
===========
<?php
	$dlp = "http://localhost:8080/re1.php";

	$opts = array(
		'http' => array(
		'max_redirects' => 1,
			'method' => "GET",
			'header' =>	"Accept: */*\r\n" .
						"Accept-Language: en-us\r\n" .
						"Accept-Encoding: gzip, deflate\r\n" .
						"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\r\n" .
						"Connection: Close\r\n"

		)
	);

	$context = stream_context_create($opts);
	$fp = fopen($dlp, 'r', false, $context);
	$meta_data = stream_get_meta_data($fp);

	var_dump($fp);
	var_dump($meta_data);
?>

RESULT(Copy & Paste from Windows Console)
=========================================
1. max_redirects = 1
--------------------
PHP Warning:  fopen(): Redirection limit reached, aborting. in D:\webroot\test.p
hp on line 18

Warning: fopen(): Redirection limit reached, aborting. in D:\webroot\test.php on
 line 18
PHP Warning:  fopen(http://localhost:8080/re1.php): failed to open stream: No er
ror in D:\webroot\test.php on line 18

Warning: fopen(http://localhost:8080/re1.php): failed to open stream: No error i
n D:\webroot\test.php on line 18
PHP Warning:  stream_get_meta_data(): supplied argument is not a valid stream re
source in D:\webroot\test.php on line 19

Warning: stream_get_meta_data(): supplied argument is not a valid stream resourc
e in D:\webroot\test.php on line 19
bool(false)
bool(false)

2. max_redirects = 2
--------------------
PHP Warning:  fopen(): Redirection limit reached, aborting. in D:\webroot\test.p
hp on line 18

Warning: fopen(): Redirection limit reached, aborting. in D:\webroot\test.php on
 line 18
PHP Warning:  fopen(http://localhost:8080/re1.php): failed to open stream: No er
ror in D:\webroot\test.php on line 18

Warning: fopen(http://localhost:8080/re1.php): failed to open stream: No error i
n D:\webroot\test.php on line 18
PHP Warning:  stream_get_meta_data(): supplied argument is not a valid stream re
source in D:\webroot\test.php on line 19

Warning: stream_get_meta_data(): supplied argument is not a valid stream resourc
e in D:\webroot\test.php on line 19
bool(false)
bool(false)

3. max_redirects = 3
--------------------
resource(7) of type (stream)
array(10) {
  ["wrapper_data"]=>
  array(23) {
    [0]=>
    string(18) "HTTP/1.1 302 Found"
    [1]=>
    string(35) "Date: Mon, 09 Oct 2006 13:37:38 GMT"
    [2]=>
    string(14) "Server: Apache"
    [3]=>
    string(53) "Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/"
    [4]=>
    string(17) "Location: re2.php"
    [5]=>
    string(17) "Content-Length: 0"
    [6]=>
    string(17) "Connection: close"
    [7]=>
    string(39) "Content-Type: text/html; charset=GB2312"
    [8]=>
    string(18) "HTTP/1.1 302 Found"
    [9]=>
    string(35) "Date: Mon, 09 Oct 2006 13:37:38 GMT"
    [10]=>
    string(14) "Server: Apache"
    [11]=>
    string(53) "Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/"
    [12]=>
    string(17) "Location: re3.php"
    [13]=>
    string(17) "Content-Length: 0"
    [14]=>
    string(17) "Connection: close"
    [15]=>
    string(39) "Content-Type: text/html; charset=GB2312"
    [16]=>
    string(15) "HTTP/1.1 200 OK"
    [17]=>
    string(35) "Date: Mon, 09 Oct 2006 13:37:38 GMT"
    [18]=>
    string(14) "Server: Apache"
    [19]=>
    string(53) "Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/"
    [20]=>
    string(17) "Content-Length: 8"
    [21]=>
    string(17) "Connection: close"
    [22]=>
    string(39) "Content-Type: text/html; charset=GB2312"
  }
  ["wrapper_type"]=>
  string(4) "http"
  ["stream_type"]=>
  string(10) "tcp_socket"
  ["mode"]=>
  string(2) "r+"
  ["unread_bytes"]=>
  int(8)
  ["seekable"]=>
  bool(false)
  ["uri"]=>
  string(29) "http://localhost:8080/re1.php"
  ["timed_out"]=>
  bool(false)
  ["blocked"]=>
  bool(true)
  ["eof"]=>
  bool(false)
}


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-10-09 14:13 UTC] shen dot shenstone at gmail dot com
From PHP Document, "max_redirects: The max number of redirects to follow. Value 1 or less means that no redirects are followed. Added in PHP 5.1.0."

so i understand it as that if i set max_redirects to 1, it do not follow the redirect("Locatoin:" in header) and return that header.
 [2006-10-09 16:14 UTC] tony2001@php.net
If you want to get the header itself you can use fsockopen().

 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Thu Jan 02 12:01:29 2025 UTC