我正在学习如何从书中做出简单的登录表单,并遇到一些问题。此登录脚本
当我运行在浏览器中的login.php脚本并输入正确的用户名和密码(或者甚至是错误的输入)..它显示错误
(注:用C _SESSION:未定义的变量:\ Program Files(x86)\ EasyPHP-DevServer-13.1VC9 \ data \ localweb \ rassal \ login.php在第8行)。
如果我输入正确的组合,用户登录..但仍会出现相同的通知,脚本将重定向回login.php页面。
如何编辑脚本以使其完美工作?就像它应该接受登录,然后转到页面(在会话中)。
这里是代码
的login.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>
你是不是在写这个而不是缩写,还是只是复制/粘贴已经被窃听?使用适当的格式和IDE(netbeans是免费的)确实有助于提高可读性,并且稍后再编辑代码。关于主题:您应该使用“session_start();”开始所有文件 – JimL
在'$ _SESSION ['logged']''上调用'isset'之前,您应该放置'session_start'。 –
你的'session_start()'在哪里? – Sean