Каковы различия между HTTP-аутентификацией и $ _SESSION для аутентификации пользователя в форме входа?
HTTP,
<?php
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] !== 'demo' || $_SERVER['PHP_AUTH_PW'] !== 'demo') {
header("WWW-Authenticate: Basic realm=\"Secure Page\"");
header("HTTP\ 1.0 401 Unauthorized");
echo 'No soup for you';
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Basic HTTP Authentication</title>
</head>
<body>
<h1>Secure Page</h1>
<p>This is a page with secure content...</p>
</body>
</html>
СЕССИЯ,
ession_start();
if( isset($_POST['username']) && isset($_POST['password']) )
{
if( auth($_POST['username'], $_POST['password']) )
{
// auth okay, setup session
$_SESSION['user'] = $_POST['username'];
// redirect to required page
header( "Location: index.php" );
} else {
// didn't auth go back to loginform
header( "Location: loginform.html" );
}
} else {
// username and password not given so go back to login
header( "Location: loginform.html" );
}
Какой из них более безопасен?
Я бы выбрал версию PHP, так как она более безопасна и с ней легче работать.
Других решений пока нет …