homepage Welcome to WebmasterWorld Guest from 54.161.236.92
register, free tools, login, search, pro membership, help, library, announcements, recent posts, open posts,
Become a Pro Member

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
Forum Library, Charter, Moderators: coopster & jatar k

PHP Server Side Scripting Forum

    
Logoff function not redirecting as expected
bkeep




msg:3558839
 8:43 pm on Jan 26, 2008 (gmt 0)

I have a logoff function that I use in my script


function logoff() {

// kill session variables
unset($_SESSION["user"]);
unset($_SESSION["pass"]);

session_destroy();
setcookie("user", NULL, time()-3600);
setcookie("pass", NULL, time()-3600);

// redirect them to anywhere you like.
header("Location: index.php");

}

I call it in the script like this with a link login.php?logoff

if (isset($_GET["logoff"]))
logoff();

When I am logged in it does log me off but does not redirect me to the index page as expected. if I use the same link and am not logged in it does redirect me to the index page. Any ideas as to what is wrong with it?

Thanks
Brandon

 

Mohamed




msg:3558895
 11:13 pm on Jan 26, 2008 (gmt 0)

I have same problem on godaddy windows hosting account. my logout script works fine in my local server but it does not work on godaddy. let me know if you host your site in godaddy.

jatar_k




msg:3559039
 12:36 pm on Jan 27, 2008 (gmt 0)

my only thought is the path, maybe try an absolute instead of the relative index

header("Location: /index.php");

or even with the full domain

header("Location: http://www.example.com/index.php");

phnord




msg:3559165
 5:57 pm on Jan 27, 2008 (gmt 0)

When you do header redirects, there can be no prior data being outputted to the browser. Do an output of your headers and make sure there is nothing else going on. Even whitespace/blank lines/etc will cause errors.

[php.net...]

bkeep




msg:3559166
 5:58 pm on Jan 27, 2008 (gmt 0)

I finally figured it out. The reason I was having an issue ended up there was other session variables that I did not unset so the working code I use is


function logoff() {

// kill session variables
unset($_SESSION["user"]);
unset($_SESSION["pass"]);
unset($_SESSION["logged_in"]);
unset($_SESSION["admin"]);

session_destroy();
setcookie("user", NULL, time()-3600);
setcookie("pass", NULL, time()-3600);

// redirect them to anywhere you like.
header("Location: index.php");

}

Is there a way to just unset all session variables? Will I have to update this every time I set a session parameter for the logout to redirect?

Thanks for your help

jatar_k




msg:3559205
 7:57 pm on Jan 27, 2008 (gmt 0)

[php.net...]

ession_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie.

In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted. setcookie() may be used for that.


coopster




msg:3559997
 8:30 pm on Jan 28, 2008 (gmt 0)

Good point, jatar_k. That page is a must-read.

Is there a way to just unset all session variables?

$_SESSION = array();

Here is another related discussion that will be of interest:
How to check if the session is really destroyed [webmasterworld.com]

Global Options:
 top home search open messages active posts  
 

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved