我是一名PHP学习者,在PHP会话中遇到了一些问题。
我正在尝试做一个简单的登录测试,但当我指向另一个页面时,会话变量似乎不会跟随。两个重要文件:
检查登录:
<html>
<head>
<title>
<?php
session_start();
?>
</title>
</head>
<body>
<?php
$connection = mysql_connect("localhost", "root", "root");
if(!connection)
{
die("could not connect to the database");
}
mysql_selectdb("phplogin", $connection) or die ("MySQL error i valg af database: " .mysql_error());
$query = "Select * from users where username='".$_POST['username']."' AND password = '".$_POST['userpass']."'";
$result = mysql_query($query);
$count = mysql_num_rows($result);
if($count==1){
$_SESSION['loggedIn'] = "true";
echo "The variable: ".$_SESSION['loggedIn'];
header("Location: loggedinPage.php");
exit;
}
if(!$count == 1){
header("Location:Login.php");
exit;
}
?>
</body>
访问页面:
<html>
<head>
<title>
<?php
session_start();
?>
</title>
</head>
<body>
<?php
if($_SESSION['loggedIn'] != "true"){
echo "You are NOT logged in";
echo $_SESSION['loggedIn'];
exit;
}
echo $_SESSION['loggedIn'];
echo "You are logged in";
?>
</body>
即使你提供了正确的用户和密码,当被引导到新页面时,它仍然会显示你没有登录。另一件事是"标题(位置:等等)",这不起作用,我必须手动重定向。
有什么帮助吗:)?-David
谢谢,我现在可以登录了,但重定向仍然不起作用?我的文件现在是这样的:
<?php
session_start();
?>
<?php
$connection = mysql_connect("localhost", "root", "root");
if(!connection)
{
die();
}
mysql_selectdb("phplogin", $connection) or die ("MySQL error i valg af database: " .mysql_error());
$query = "Select * from users where username='".$_POST['username']."' AND password = '".$_POST['userpass']."'";
$result = mysql_query($query);
$count = mysql_num_rows($result);
if($count==1){
$_SESSION['loggedIn'] = "true";
header("Location: loggedinPage.php");
}
if(!$count == 1){
header("Location:Login.php");
}
?>
<head>
<title>
</title>
</head>
<body>
</body>
session_start()
应该位于文档的最顶部,而header()
只能在网站上进行任何输出之前执行。
在输出数据之前,您应该只打开会话或更改其内容。session_start应在任何输出和之前调用
<html>
...
输出。
也是如此
$_SESSION['loggedIn'] = "true";
将所有与登录相关的检查和初始化置于任何html 之上
与标题("位置…")相同-应该在输出之前
顺便说一句,我不会直接去
if($_SESSION['loggedIn'] != "true"){ ...
相反,我会检查它是否设置了
if(!isset($_SESSION['loggedIn']) || $_SESSION['loggedIn'] != "true"){ ...