我是一名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>
即使您提供了正确的用户名和密码,它仍然表示您在定向到新页面时未登录。 另一件事是“标题(位置:等等)”,这不会工作,我必须手动重定向。
任何帮助:)? - 大卫
谢谢,我现在登录工作,但重定向仍然无法正常工作?我的文件现在看起来像这样:
<?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>
答案 0 :(得分:4)
session_start()
应该位于文档的最顶层,header()
只应在网站上输出之前执行。
答案 1 :(得分:0)
在输出数据之前,您应该只打开会话或更改其内容。应在任何输出和
之前调用session_start<html>
...
输出。
与
相同$_SESSION['loggedIn'] = "true";
将所有与登录相关的检查和启动放在任何html
之上 带标题的('Location ...')它是相同的 - 应该在输出之前
不过,我不会直接去if($_SESSION['loggedIn'] != "true"){ ...
相反,我会检查它是否已设置
if(!isset($_SESSION['loggedIn']) || $_SESSION['loggedIn'] != "true"){ ...