没有在php5的所有页面中设置会话

I am using session_start(); at the top of my login page. After a user logs in, a message is displayed on screen which shows that the session is being set. But, I cannot carry sessions from page to page or can I echo out SID. It is a blank value. I would be grateful if someone could show me where I am going wrong. Thanks

<?php

  $userpost = mysql_real_escape_string($_POST['user']);

  if (!isset($_SESSION['user'])) {
   session_start();
   $_SESSION['user'] = $userpost;
}

   echo $_SESSION['user'] .' '. 'Just logged in' .  SID;
   // Or maybe pass along the session id, if needed

?>

You have to have session_start(); on the very top of your code, after <?php. Since you are checking if the session is set without starting the sessions, your code will fail.

Is has to be like this:

<?php
 session_start();
 $userpost = mysql_real_escape_string($_POST['user']);

 if (!isset($_SESSION['user'])) {
   $_SESSION['user'] = $userpost;
 }

 echo $_SESSION['user'] .' '. 'Just logged in' .  SID;
 // Or maybe pass along the session id, if needed

?>

It's because you're always looking in $_POST for your user data.

Bring the session_start() out of that condition:

<?php
  session_start();
  $userpost = mysql_real_escape_string($_POST['user']);

  if (!isset($_SESSION['user'])) {
   $_SESSION['user'] = $userpost;
  }

You said that you called session_start() at the top of your login page, but you did not mention your other pages. session_start() needs to be called at the top of every page in your application. I generally put my session_start() logic, along with a snippet of code for logging the user out after a period of inactivity, in an include file and then include it at the top of every page.

<?  session_start();

    if (isset($_SESSION["last_activity"]) && (isset($_SESSION["username"])) && ((time() - $_SESSION["last_activity"]) > 900))
    {
        unset($_SESSION["username"]);
    }
    else
    {
        $_SESSION["last_activity"] = time();
    }
?>