Hi Andrew,
I've been working on a similar question recently. Try to set the cookie and
then redirect back into the same script. When setting the cookie, also place
a temporary value in the CGI environment. When the script is activated the
second time around, the presence of the temporary CGI value indicates our
attempt to set a cookie. If there is no cookie and the temporary value
exists, it basically means that the remote browser is not accepting our
cookie. BTW, I gained a lot of insight regarding this issue by reading a
Randal Schwartz tutorial at the following URL:

    http://www.stonehenge.com/merlyn/WebTechniques/col61.html

and I know that the author frequently hovers around this newsgroup so I just
want to say thank you Randal for your excellent articles.

Ibrahim Dawud




Here is a sample of my code which is based on that tutorial:

my $visitor_cookie = $cgi->cookie(-name=>'site-visitor');
my $visitor_param  = $cgi->param ("site-visitor");

if (!defined $visitor_cookie){
    if (!defined $visitor_param){
        # Try to start a new session by setting a "site-visitor"
        # cookie. If that fails, place the session in the CGI environment.
        $visitor_cookie = $cgi->cookie
 -name=>"site-visitor",-value=>"value");
        if (!defined $cgi->param("cookietemp")) {
            # Try to create a "site-visitor" cookie for the first time.
            # Exit the script using redirect and come back to check if it is
there.
            # Set a temporary value in the CGI environment.
            $cgi->param("cookietemp",1);
            print $cgi->redirect(-cookie=> $visitor_cookie, -uri=>
$cgi->self_url());
        }
        else {
            # We know if we are here that we failed to create a
"site-visitor"
            # cookie the first time we ran this script. Place the session
data
            # in the CGI environment instead.
            $cgi->param("site-visitor","value");
            print $cgi->redirect(-uri=> $cgi->self_url());
        }
    }
    else {
        # Basically, the previous session was passed via CGI. It is
        # reasonable to continue using CGI to pass along session data. This
        # means making sure that all links and hidden fields have a
        # unique identifier embedded in them to pass on.
        if (!defined $cgi->param("cookietemp")) {
            # subsequent times using CGI
        }
        else {
            # first time using CGI
            $cgi->delete("cookietemp");
            print $cgi->redirect(-uri=> $cgi->self_url());
        }
    }
else {
    # previous session was passed via a cookie. Question: Is it necessary
    # to also check CGI parameters at this point? Probably not since
    # we have assumed cookies as the primary method for passing session
    # data.
    if (!defined $cgi->param("cookietemp")) {
        # subsequent times using cookies
    }
    else {
        # first time using cookies
        $cgi->delete("cookietemp");
        print $cgi->redirect(-uri=> $cgi->self_url());
    }
}
















----- Original Message -----
From: "Andrew" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, September 27, 2001 4:27 AM
Subject: Cookie and redirecting.


> Dear Folks,
>
>     I am currently working on cookies for tesing out.
> Although a lot of people had disabled the function on
> their browsers, I would just like to try it.
>
>     I got few knotty problems :
>
>     1) I could set the cookie's parameters and
> retrieve it. But how I can make use of the returned
> parameters to realise the concept of cookie.
>
>     2) Upon detecting that the cookie is not valid
> using if statement, I would like to use the command in
> the CGI script to immediate load another URL page. I
> had tried the redirect command for cookie but could
> not help.
>
> E.g. if ($cookieID eq '12345') {
>
>          #load new web page.
>
>          }
>
> Thanks,
> Andrew
>
>
> ____________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.co.uk address at http://mail.yahoo.co.uk
> or your free @yahoo.ie address at http://mail.yahoo.ie
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to