PHP-没有在index.PHP上设置$_SESSION[';var1';]


PHP - $_SESSION['var1'] is not set on index.php

所以我有了index.php页面。

<?php
session_start();
if (!isset($_SESSION['var1'])) {
echo "session not started...";
die();
} else {
echo "session started"; 
die();
}
?>

它还有一个登录表单,该表单导致以下登录脚本:

<?php
session_start();
include('config.php');
$username=$_POST['username'];
$password=$_POST['password'];
if($_SERVER['REQUEST_METHOD'] == "POST") {
$result = mysql_query("SELECT ..blahblah");
if(mysql_num_rows($result) > 0) {
$_SESSION['var1'] = 1;
}
}
if(!isset($_SESSION['var1'])) {
echo "wrong login or password";
} else {
header("location:http://mysite.com");
}
?>

问题是,对于其他页面,变量是设置好的,但对于index.php则没有。我不明白。不要在任何地方看到错误。

以下是print_r($_SESSION)的结果:在其他页面:数组([is_logged_in]=>1)在索引页面上:Array()

也许您可以从http://www.mysite.com然后你重定向到http://mysite.com.小心会话。有www.和没有www.的网站在会话中是不一样的。

哪个变量没有设置?我在那个页面的任何地方都看不到$_SESSION['var1']。会话变量只有在您设置后才可用,因此您不能期望在访问者登录的第一个页面上设置$_SESSION['is_logged_in']

这个PHP块是index.PHP中的第一个吗?如果HTML表单在该块之前,那么PHP将无法在响应标头中发送会话cookie。