views:

177

answers:

2

Session variables are apparently not working for me. I don't know what I'm doing wrong. This is the code that I'm using to check for a valid password:

if ($input_password_hash == $password_hash)
 {
  session_start();
  $_SESSION['is_user'] = 1;
  header("Location: ../new_look"); //or Location: index.php
 }
else echo "Wrong password.";

in the index.php file (where it redirects to), I have this code:

if ($_SESSION['is_user'] == 1)
{
  //show index page with navigation bar for registered user
}

else
{
 //do something else
}

but it's not working at all.

The session does apparently start and that can be verified by checking the cookie.

What am I doing wrong?

+3  A: 

You know that you've got to write session_start() before you use the $_SESSION variable in any request, right? It looks like you haven't put it in index.php anywhere.

Ray Hidayat
A: 

I just got back from fixing that...added session_start() right at the top of the file - even before the <html> tag. Doing session_start() in the middle gives errors...don't know why. I'm new to this. Thanks for your prompt response though.

Mussnoon
session_start has to be called before any headers are sent, thats probably why it raised errors when you put in the middle.
Juan
Just a minor correction to Juan's comment. session_start must be called before the body of the response is sent (other headers are fine).
Jim OHalloran
Actually no, Juan is right. You can't even put the dtd before session_start(). I tried that. Put just the dtd, then session_start(), and it still threw the error.
Mussnoon
Jim is referring to the HTTP headers, not the HTML head tag.
linead