Я учился создавать простую форму входа в книгу, и у меня возникают некоторые проблемы.Этот сценарий входа
Когда я запускаю сценарий login.php в браузере и введите правильное имя пользователя и пароль (или даже неправильный ввод) .. он отображает сообщение об ошибке
(Примечание: Undefined переменной: _SESSION в C : \ 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_start' перед вызовом' isset' на '$ _SESSION ['logged']'. –
Где находится 'session_start()'? – Sean