Re: How to create, name and start PHP sessions
| From: | Uchendu Nwachukwu | Date: | Thu, 18 Apr 2002 18:22:53 +0000 |
| Subject: | Re: How to create, name and start PHP sessions | ||
| References: | 1 2 3 4 5 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-93572@lists.php.net to get a copy of this message | ||
Make sure you aren't sending any HTML to the browser for any reason before
the session_start(); call.
Surefire way to prevent this error: place the following line as the first
line of PHP script you execute on every page:
ob_start();
Check out http://www.php.net/ob_start for details on what
that does.
--
Uchendu Nwachukwu
newsreply AT unndunn DOT com - www.unndunn.com
"Phil Powell" <soazine@erols.com> wrote in message
news:20020418151537.32475.qmail@pb1.pair.com...
> I am now getting the following errors on every page:
>
> Warning: Cannot send session cache limiter - headers already sent (output
> started at c:\program files\apache
> group\apache\htdocs\webmissions\picupload\miss_pic_upload.php:25) in
> c:\program files\apache
> group\apache\htdocs\webmissions\picupload\miss_pic_upload.php on line 81
>
> This is when I use the following block of code to first SET the session
for
> the very first time:
>
> if (mysql_num_rows($results) == 0) {
> // Could not find info in db redirect to login library with error msg
> $errorHTML .= "<font color=cc0000>We could not find your information
";
> $errorHTML .= " in our database. Please try again.</font><p>";
> $hasLoggedIn = 0;
> } else if (strcmp(session_name(), "hasLoggedIn") != 0) {
> // Set up session variable with username and redirect to pic upload
lib
> session_name("hasLoggedIn");
> $name = session_name();
> session_start();
> $HTTP_SESSION_VARS["username"] = $username;
> $HTTP_SESSION_VARS["ip"] = $REMOTE_ADDR; // To prevent session
stealing
> }
>
> I am completely confused!
>
> Phil
>
> "Michael Virnstein" <michael.virnstein@brodos.de> wrote in message
> news:20020418145103.2711.qmail@pb1.pair.com...
> > you have to put this on top of every of your pages:
> > ---------------------------------
> > session_name("hasLoggedIn");
> > $stuff = session_name();
> > session_start();
> > ---------------------------------
> > session_name first sets the name. then you call session_start which will
> > look for the
> > sessionid in ${session_name()}. that is why you have to call
> session_name()
> > BEFORE calling
> > session_start();
> >
> > Regards Michael
> >
> >
> > "Phil Powell" <soazine@erols.com> schrieb im Newsbeitrag
> > news:20020418141725.75200.qmail@pb1.pair.com...
> > > Thanx, however, I cannot retain the session_name when I go to the next
> > URL.
> > > How do I retain the session_name especially when I have to use a form
> > > method=POST?
> > >
> > > I have a URL that will be the login
> > >
> > > Once you login you will have a session (that works now)
> > >
> > > That page with the session will have a form with five <input=file>
type
> > form
> > > elements
> > >
> > > Once submitted you will be at a "thank-you" page and files uploaded,
but
> > > then the session is gone (session_name is back to PHPSESSID again)
> > >
> > > What do I do to keep it? I cannot use cookies and putting it in the
URL?
> > >
> > > Phil
> > > "Michael Virnstein" <michael.virnstein@brodos.de> wrote in message
> > > news:20020418104826.84326.qmail@pb1.pair.com...
> > > > session_name will retur the previos name of the session, so in your
> case
> > > > $stuff will contain "PHPSESSID"
> > > > and i think you have to call session_start(); before you do
> > > > $HTTP_SESSION_VARS["username"] = $username;
> > > >
> > > > so perhaps this will work:
> > > >
> > > > session_name("hasLoggedIn");
> > > > $stuff = session_name();
> > > > session_start();
> > > > $HTTP_SESSION_VARS["username"] = $username;
> > > >
> > > > Regards, Michael
> > > >
> > > > "Phil Powell" <soazine@erols.com> schrieb im Newsbeitrag
> > > > news:20020418094249.30058.qmail@pb1.pair.com...
> > > > > Will the following lines set up a session by the name of
> "hasLoggedIn"
> > > > with
> > > > > HTTP_SESSION_VARS["username"]?
> > > > >
> > > > > $stuff = session_name("hasLoggedIn");
> > > > > $HTTP_SESSION_VARS["username"] = $username;
> > > > > session_start();
> > > > >
> > > > > I am trying to create a page that sets a session variable upon
> > > successful
> > > > > login, problem is, the session_name() never changes it always
> remains
> > > the
> > > > > default PHPSESSID what am I doing wrong now?
> > > > >
> > > > > I fixed the problem with multiple files, that was bizarre!
> > > > >
> > > > > Thanx
> > > > > Phil
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
> "Uchendu Nwachukwu" <newsreply@unndunn.com> wrote in message
> news:20020418145747.8962.qmail@pb1.pair.com...
> > In your example, simply place this line in your code (on *every* page
you
> > want the session to be on):
> >
> > session_name("HasLoggedIn");
> > session_register("username");
> >
> > If your PHP was compiled with '--enable-trans-sid' you shouldn't have to
> > worry about anything else. PHP will automatically store the session ID
in
> a
> > cookie, or it will pass the session ID in your HTML links. If it wasn't
> > compiled with '--enable-trans-sid', you'll need to use the constant SID.
> >
> > Example:
> > ------------------------------------------------------------------
> > <?php
> > session_name("HasLoggedIn");
> > session_register("username"); ?>
> >
> > Welcome <?=$username;?>. <!-- assumes user has already entered a
username
> on
> > some other page -->
> >
> > <a href="nextpage.php?<?=SID;?>">Click here to continue.</a>
> > ------------------------------------------------------------------
> >
> > Hope that helps! Check out
> > http://www.php.net/manual/en/ref.session.php
> for
> > more info
> >
> > --
> > Uchendu Nwachukwu
> > newsreply AT unndunn DOT com - www.unndunn.com
> >
> > "Phil Powell" <soazine@erols.com> wrote in message
> > news:20020418141725.75200.qmail@pb1.pair.com...
> > > Thanx, however, I cannot retain the session_name when I go to the next
> > URL.
> > > How do I retain the session_name especially when I have to use a form
> > > method=POST?
> > >
> > > I have a URL that will be the login
> > >
> > > Once you login you will have a session (that works now)
> > >
> > > That page with the session will have a form with five <input=file>
type
> > form
> > > elements
> > >
> > > Once submitted you will be at a "thank-you" page and files uploaded,
but
> > > then the session is gone (session_name is back to PHPSESSID again)
> > >
> > > What do I do to keep it? I cannot use cookies and putting it in the
URL?
> > >
> > > Phil
> > > "Michael Virnstein" <michael.virnstein@brodos.de> wrote in message
> > > news:20020418104826.84326.qmail@pb1.pair.com...
> > > > session_name will retur the previos name of the session, so in your
> case
> > > > $stuff will contain "PHPSESSID"
> > > > and i think you have to call session_start(); before you do
> > > > $HTTP_SESSION_VARS["username"] = $username;
> > > >
> > > > so perhaps this will work:
> > > >
> > > > session_name("hasLoggedIn");
> > > > $stuff = session_name();
> > > > session_start();
> > > > $HTTP_SESSION_VARS["username"] = $username;
> > > >
> > > > Regards, Michael
> > > >
> > > > "Phil Powell" <soazine@erols.com> schrieb im Newsbeitrag
> > > > news:20020418094249.30058.qmail@pb1.pair.com...
> > > > > Will the following lines set up a session by the name of
> "hasLoggedIn"
> > > > with
> > > > > HTTP_SESSION_VARS["username"]?
> > > > >
> > > > > $stuff = session_name("hasLoggedIn");
> > > > > $HTTP_SESSION_VARS["username"] = $username;
> > > > > session_start();
> > > > >
> > > > > I am trying to create a page that sets a session variable upon
> > > successful
> > > > > login, problem is, the session_name() never changes it always
> remains
> > > the
> > > > > default PHPSESSID what am I doing wrong now?
> > > > >
> > > > > I fixed the problem with multiple files, that was bizarre!
> > > > >
> > > > > Thanx
> > > > > Phil
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>