Я пытаюсь создать простой сценарий сеанса входа в систему, он не должен быть очень безопасным, и я надеялся сделать это без необходимости базы данных. По сути, я хочу дать людям приглашения на веб-страницу, и они могут получить к ней доступ только с помощью имени пользователя и пароля на приглашении, поэтому мне требуется более одного входа в систему. Я также хотел бы отобразить сообщение при успешном входе в систему что-то вроде «Добро пожаловать имя пользователя.»
Я нашел код ниже, который, кажется, хорошо выполняет свою работу, но как я могу настроить его, чтобы скрыть форму после входа в систему?
<?php
session_start();
$userinfo = array(
'user1'=>'password1',
'user2'=>'password2'
);
if(isset($_GET['logout'])) {
$_SESSION['username'] = '';
header('Location: ' . $_SERVER['PHP_SELF']);
}
if(isset($_POST['username'])) {
if($userinfo[$_POST['username']] == $_POST['password']) {
$_SESSION['username'] = $_POST['username'];
}else {
//Invalid Login
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Login</title>
</head>
<body>
<?php if($_SESSION['username']): ?>
<p>You are logged in as <?=$_SESSION['username']?></p>
<p><a href="?logout=1">Logout</a></p>
<?php endif; ?>
<form name="login" action="" method="post">
Username: <input type="text" name="username" value="" /><br />
Password: <input type="password" name="password" value="" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
Проверь это:
<?php
session_start();
$userinfo = array(
'user1'=>'password1',
'user2'=>'password2'
);
if(isset($_GET['logout'])) {
$_SESSION['username'] = '';
header('Location: ' . $_SERVER['PHP_SELF']);
}
if(isset($_POST['username'])) {
if($userinfo[$_POST['username']] == $_POST['password']) {
$_SESSION['username'] = $_POST['username'];
}else {
//Invalid Login
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Login</title>
</head>
<body>
<?php if($_SESSION['username']): ?>
<p>You are logged in as <?=$_SESSION['username']?></p>
<p><a href="?logout=1">Logout</a></p>
<?php else: ?>
<form name="login" action="" method="post">
Username: <input type="text" name="username" value="" /><br />
Password: <input type="password" name="password" value="" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php endif; ?>
</body>
</html>
Просто поместите вашу форму в состояние
if(empty($_SESSION['username'])){
// your html form here
}
+ Изменить
if(isset($_GET['logout']))
{
$_SESSION['username'] = '';
header('Location: /');
}
в
if(isset($_GET['logout']))
{
Session_destroy();
header('Location: /');
}
Если вы не убьете / не уничтожите сессию, у вас будут большие проблемы.