我正在学习从一本书中制作一个简单的登录表单,但遇到了一些问题。
当我在浏览器中运行 login.php 脚本并输入正确的用户名和密码(甚至输入错误)..它显示错误
(注意:未定义变量:第 8 行 C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\rassal\login.php 中的 _SESSION)。
如果我输入了正确的组合,用户就会登录..但仍然会出现相同的通知,并且脚本会重定向回 login.php 页面。
如何编辑脚本以使其完美运行?就像它应该接受登录然后进入一个页面(在会话中)。
这是代码
登录.php
<?php
$username = (isset($_POST['username'])) ? $_POST['username'] : '';
$password = (isset($_POST['password'])) ? $_POST['password'] : '';
$redirect = (isset($_REQUEST['redirect'])) ? $_POST['redirect'] : 'secret.php';
if(isset($_POST['submit']))
{
if(!isset($_SESSION['logged']) && $_SESSION['logged']!=1)
{
if(!empty($username) && $username == 'uname' && !empty($password) && $password = 'ppas')
{
$_SESSION['username']=$username;
$_SESSION['logged']=1;
header('Refresh: 5; URL = '.$redirect);
echo "Redirecting";
die();
}
else
{
$_SESSION['username']='';
$_SESSION['logged']=0;
echo "You entered a wrong combination of username and password";
}
}
}
?>
<html>
<head>
<title>Login </title>
</head>
<body>
<form action="login.php" method="post">
<table>
<tr>
<td>Username :</td>
<td><input type="text" name="username" value="<?php echo $username; ?>" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" value="<?php echo $password; ?>" /></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Log In" /></td>
</tr>
</table>
</form>
</body>
</html>
这是 auth.inc.php
<?php
session_start();
if(!isset($_SESSION['logged']) && $_SESSION['logged']!=1)
{
header('Refresh: 5; URL=login.php?redirect=' . $_SERVER['PHP_SELF']);
echo "You'd be now redirected to the login page ";
}
die();
?>
这是secret.php(用户成功登录时显示的文件)
<?php
require ('auth.inc.php');
?>
<html>
<head>
<title>Logged IN </title>
</head>
<body>
<h2>You're now logged in </h2>
</body>
</html>