我有一个login.php文件,其中包含要登录的表单。 我有一个validation.php文件来验证登录,使用以下代码:
<?php
session_start();
if(($_SESSION['user'] == "user123") && ($_SESSION['pass'] = "123"))
{
header("Location: index.php");
}
else
{
header("Location: login.php");
}
?>
我有一个index.php文件,当我登录时,我想转到index.php页面,使用以下代码:
<?php
session_start();
if(($_SESSION["user"]) and ($_SESSION["pass"]))
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml2-transitional.dtd">
<html xmlns="http://www.w3.org/1993/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=u2f-5" />
<title>Untitled Document</title>
</head>
<body>
<p>geageagge</p>
<p>egeageage</p>
<p> </p>
<p> </p>
<p>geagaegea</p>
</body>
</html>
<?php
}
else
echo "You didnt do login";
但我得到了这个错误:未定义的索引用户用户,在这一行:if(($_SESSION["user"]) and ($_SESSION["pass"]))
任何人都知道我做错了什么?
答案 0 :(得分:1)
1)login.php
(我猜)
此
$_SESSION['pass'] = "123"
应该是
$_SESSION['pass'] == "123"
2)检查值isset
if(isset($_SESSION["user"]) and isset($_SESSION["pass"]))
在我看到你的html表单之后,我认为你几乎没有错误。
在validation.php
中你必须检查输入的值,所以你需要使用$_POST然后如果它们是正确的,就把它们放在会话中。
因此validation.php
中的代码应该看起来不错
<?php
session_start();
if(($_POST['user'] == "user123") && ($_POST['pass'] == "123"))
{
$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];
header("Location: index.php");
}
else
{
header("Location: login.php");
}