Can';t访问PHP中不同文件中的会话变量

Can';t访问PHP中不同文件中的会话变量,php,postgresql,session,Php,Postgresql,Session,我正在尝试一个简单的登录系统,我使用的是PHP5.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 op

我正在尝试一个简单的登录系统,我使用的是PHP5.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”处的会话内容,但我得到一个错误:“未定义的索引: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>

用户名:

密码:


首先,这是行不通的

$_SESSION['username'] = $myusername;
echo $_SESSION['username'];
header("location:homepage.php");
因为你在输出东西,然后你会发送一个标题

如果您这样做,页面会输出什么

 print_r($_SESSION);

我认为会话注册的代码很好。 变量$myusername不包含任何值,这就是为什么未创建会话,并且出现未定义索引错误的原因。 检查您是否从$U POST['myusername']表单中获取值

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

现在,请尝试打印

在会话开始的下方设置会话,并检查会话是否工作,然后您的$count不等于1如果$count未设置为1,则打印“错误的用户名和密码”所以我确定$count是1。只需打印会话并将骰子放在设置会话用户名的位置,然后查看会话用户名中显示的内容,我真的不明白。将会话设置为什么?在此行后面打印:$\u会话['username']=$myusername;打印会话和模具();要查看会话变量是否已设置,我知道,这是调试的遗留问题。打印\u r打印出“Array()”好的,设置了$myusername,是否确定已将post值发送到表单页。其次,创建一个新的php文件并将其放入其中,然后使用print\u r($\u session)再次输出会话;是的,我试着输入一个常量字符串而不是$myusername,但没有改变任何东西。我尝试了你的建议,打印或正确输出内容。如果(!isset($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\