无法在PHP中的其他文件中访问会话变量

时间:2013-12-25 16:26:47

标签: php postgresql session

我正在尝试一个简单的登录系统,我正在使用PHP 5.3.8。首先,我有一个连接到数据库的db.php文件:

<?php
$host = "localhost";
$user = "xxx";
$pass = "xxx";
$db = "moviedb";

$connection = pg_connect ("host=$host dbname=$db user=$user
password=$pass");
if (!$connection)
{
    die("Could not open connection to database server");
}

?>

使用表单页面,用户提交用户名和密码。我使用此文件来检查凭据:

<?php
session_start();

include("db.php");

$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];


$sql="SELECT * FROM users WHERE username='$myusername' and password='$mypassword'";
$result=pg_query($sql);

$count=pg_num_rows($result);

if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
    $_SESSION['username'] = $myusername;
    echo $_SESSION['username'];
    header("location:homepage.php");
}
else {
    echo "Wrong Username or Password";

}

?>

如果用户名和密码在数据库中,则登录成功,用户将被重定向到此页面:

<?php
session_start();
include("db.php");
echo $_SESSION['username'];
echo session_id();
?>

<p>WELCOME!</p>

问题是必须打印索引'username'的会话内容,但我得到一个错误:“Undefined index:username”。我已经尝试了所有的东西,而且代码看起来正确,我肯定会在我的智慧结束。为什么这不起作用?

这是我的表格:

<form action="checklogin.php" method="post">
    <label>UserName :</label>
    <input type="text" name="myusername"/><br />
    <label>Password :</label>
    <input type="password" name="mypassword"/><br/>
    <input type="submit" value=" Submit "/><br />
</form>

2 个答案:

答案 0 :(得分:0)

首先,这不起作用

$_SESSION['username'] = $myusername;
echo $_SESSION['username'];
header("location:homepage.php");

因为您正在输出内容,之后您正在发送标题。

如果你这样做,页面输出是什么

 print_r($_SESSION);

答案 1 :(得分:0)

我认为会话注册的代码很好。 变量$ myusername不包含任何值,这就是为什么没有创建会话并且您得到未定义的索引错误。 检查您是否从FORM $ _POST ['myusername']获得价值。

$_SESSION['username'] = "testing";

现在尝试打印