PHP会话变量在页面之间丢失。

时间:2016-03-23 11:27:56

标签: php mysql session

我创建了一个简单的登录页面来访问应用程序。登录有时可以正常工作,但有时我会无法登录系统,因为会话数据将在最后一页丢失。

我拥有的文件 1)login.php,带有登录名和密码字段。

2)loginprocess.php - 将连接到数据库以检查是否存在用户名和密码,然后创建会话。

3)listing.php - 如果登录成功,这将是最后一页。

如果数据库中存在登录名和密码,则loginprocess.php页面将创建会话变量。然后它将重定向到最后一页。

$selectstring = "SELECT * FROM logintable WHERE username='".$loginname."' AND password='".$pass."'";
$result = mysql_query($selectstring);

//IF YES THEN GO TO MAIN
if(mysql_num_rows($result) > 0)
while($row = mysql_fetch_array($result))
{
 //CREATE SESSION   
session_start();
// Set session variables
$_SESSION["loginname"]= $loginname;     
header("Location: listing.php");
exit;

}
else { 
echo "ERROR";
header("Location: login.php?message=error");
exit;
}

在最后一页top.php的顶部,我将有一个脚本,如果会话变量为空,它将重定向。

session_start(); 

if (!isset($_SESSION['loginname']) && empty($_SESSION['loginname'])) {
   header("Location: login.php");
} 

我是否插入了session_start();在loginprocess.php上来不及?

1 个答案:

答案 0 :(得分:1)

首先,将session_start();移到文件顶部。

接下来,您需要在if中执行OR而不是AND,因为登录名未设置为空。