Re: setcookie() Expiration [message #171070 is a reply to message #171069] |
Wed, 22 December 2010 16:02 |
Tyrone Slothrop
Messages: 3 Registered: December 2010
Karma:
|
Junior Member |
|
|
On Wed, 22 Dec 2010 09:30:46 +0100, "Álvaro G. Vicario"
<alvaro(dot)NOSPAMTHANX(at)demogracia(dot)com(dot)invalid> wrote:
> El 22/12/2010 0:45, Tyrone Slothrop escribió/wrote:
>> I am having problems setting a cookie to expire in the future rather
>> than at end of session on a particular server. I can upload the code
>> to another server and the cookie expiration is correct. I checked the
>> server time and it is correct.
>>
>> I have even tried simplifying the code to essentials and it will not
>> work.
>> setcookie ('cookie_name', 'cookie_value', time()+(60*60*24*7));
>>
>> What is even more frustrating is that code I wrote years ago which
>> used to work, now does not. I have tried in multiple browsers and all
>> have the same problem. This pretty much narrows it down to the
>> server.
>>
>> This is a leased server running CentOS and cPanel and all updates to
>> PHP, etc. are current within a month or two. I have root access.
>>
>> Anyone else run into this problem?
>
> The first step is to inspect the output of setcookie(). You can see the
> raw HTTP header with many tools, such as the Firebug extension for
> Firefox, but most browsers have a builtin cookie manager as well.
>
> Also, make sure you are using a valid domain name for your tests.
Let's assume that I pretty much know what I am doing. I have been
coding PHP for at least 12 years, developing backends for complex web
sites. Not to say I don't make mistakes - and I make some incredibly
silly ones at times - but I have verified the code on a different
server and I know it works.
The test methodology I created is a standalone script which creates
three cookies, passing various parameters from the simple:
setcookie(name, value, expiration)
to the more complex:
setcookie(name, value, expiration, path, domain)
I primarily use Firefox because of Firebug and developer's extension.
Developer's extension installed for IE, as well as HTTP Analyzer.
In all cases the cookies are set properly but the expiration on the
server which will host the scripts refuses to set a cookie which
expires beyond the life of the session. On the second server and
using the same browser, the same script works properly with the cookie
expiration set a few days in the future.
It appears the next test is to set these cookies using JS to make
absolutely sure it is not the browser but, in the context of the
application I am developing, using JS is not the preferred option. The
script accepts post data from a remote server, processes the data,
sets cookies to prevent duplicate submissions, then redirects to
another form for further processing. The cookies set are encrypted
(64 alphanumeric characters). Upon a second submission the cookies
are decrypted, the the data is compared against existing records in
data table, and, should there be a match, immediately redirects to
the next form. The header function will not allow me to write
anything to output prior to redirection so JS cookies cannot be
written, at least prior to the header() call. Anyway, I know the test
script in using even the simplest cookies behaves on another server.
This thing has me totally baffled.
|
|
|