PHP会话:解释请吗?
我现在一直在学习PHP,大部分时间它一直很容易。 我唯一挂的就是让会议开始工作。 谷歌在这一努力中一直没有宽容。
这可能是两个原因之一; 语法或我的软件。 我目前正在使用EasyPHP 5.3.5.0在未连接到互联网的机器上构建本地网站。 将它连接到互联网不是一种选择。
  我目前所了解的会话是与它相关的许多语法已被废弃,取而代之的是超全球性的$_SESSION数组,这更容易使用。 start_session();  必须在与会话相关的任何语法之前。  但是,我的登录脚本没有建立会话,因为quick !isset ($_SESSION['username'])总是返回true。 
我的脚本是这样设置的:
PHP包含login.php,这是一种形式。 check_login.php是验证它,如果查询返回一行,它将重定向到login_success.php,它建立会话,给出一个欢迎消息,然后重定向(使用JavaScript)到主页。
有任何想法吗?
编辑包含更多信息:
这里是我的代码大纲:
index.php文件:
include 'main_login.php';
main_login.php:
if(!isset ($_SESSION['username'])){
...
Login form, action="cehcklogin.php" method="post"
...
}else{
var_dump ($_SESSION): // Just to see if it works
}checklogin.php:
Connect to SQL
$username = $_POST['username'];
$password = $_POST['password'];
$username / $password stripslashes / mysql_real_escape_string
Query to find the username & password
$count = mysql_num_rows($result);
if($count = 1){
$_SESSION["username"] = $username;
$_SESSION["password"] = $password;
header("location:login_success.php");
}else{
echo "Wrong Username or Password."
}login_success.php:
登录过程在这里完成,重定向到家,这就是问题所在。
session_start();
var_dump($_SESSION); //This works
if(!isset ($_SESSION['username'])){
header("location:index.php");
}
Javascript redirect, and a welcome message appears.  它一直运行,直到你到达主页,应该设置$_SESSION['username'] ,它不应该显示表单,但它确实。 
  看起来你没有在你的main_login.php中使用session_start() ,就像etranger所提到的那样。  您需要在每个新请求开始时调用该函数以开始使用会话。 
  否则,如果您调用session_start()而您只是忽略了将其显示在代码示例中,那么在重定向期间会话ID可能会丢失。  您是使用基于cookie的会话还是将会话ID作为URL参数传递?  尝试在每个页面的顶部打印session_id()或SID 。  这会让你知道会话何时丢失(会话ID将会改变或成为“”)。 
如果您使用的是基于Cookie的会话,那么由于某种原因Cookie可能会丢失。 如果您使用URL参数传递会话ID,那么透明会话ID支持可能无法正常工作。
你必须尽可能早地调用session_start() ,并且必须在使用$_SESSION之前,否则它将是空的。 
