Re: Why does `setcookie` send header before throwing `Error` exception?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Apr 4, 2021, at 4:39 PM, JEFFRY KILLEN <jekillen@xxxxxxxxxxx> wrote:
> 
> 
> 
>> On Apr 4, 2021, at 3:07 PM, Jair López <jair_lopez4321@xxxxxxxxxxx> wrote:
>> 
>> Sorry for the typos in my previous message. I stand corrected, it is
>> 
>>> 	setcookie('name', 'value', 1, new Foo());
>> 
>> instead of
>> 
>>> 	setcookie('name', 'value', 1, => new Foo());
>> 
>> and here is the fixed test file:
>> 	--TEST--
>> 	setcookie() sends header before throwing `Error` exception
>> 	--FILE--
>> 	<?php
>> 	ob_start();
>> 
>> 	class Foo{
>> 	}
>> 
>> 	try {
>> 		setcookie('name', 'value', array(
>> 			'expires' => 1,
>> 			'path' => new Foo()
>> 		));
>> 	} catch (\Error $e) {
>> 		echo $e->getMessage() . "\n";
>> 	}
>> 
>> 	var_dump(headers_list());
>> 	echo "Done\n";
>> 	?>
>> 	--EXPECTHEADERS--
>> 
>> 	--EXPECTF--
>> 	Object of class Foo could not be converted to string
>> 	array(1) {
>> 	[0]=>
>> 	   string(23) "X-Powered-By: PHP/8.0.3"
>> 	}
>> 	Done
> 
> 
> Hello;
> This may not make the difference but the line:
>> 'path' => new Foo() 
> ‘path’=>needs a string, so how is ‘new foo()’
> returning a string?
> 
> Could it be sending the header and then choking
> because ‘path’ doesn’t have a valid value assignment?

As a matter of fact, as you have the class def it looks
like calling new foo() from within the class def would
make it recursively trying to set the cookie.
JK




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux