PHP HTTP Basic Auth с использованием формы - PullRequest
4 голосов
/ 13 августа 2010

Как я могу использовать базовую аутентификацию HTTP и сделать так, чтобы пользователь отправлял свое имя пользователя и пароль в форме HTML и чтобы он аутентифицировался с использованием базовой аутентификации HTTP.

Я слышал, что Internet Explorer больше не поддерживает использование http://user:password@website.com не более, так что я не знаю, как лучше к этому подойти.

Использование PHP, javascript и HTML - это нормально.Я не хочу использовать PERL и не использую большие библиотеки JavaScript.

Если вы не думаете, HTTP Basic Auth.это лучший способ, пожалуйста, порекомендуйте что-нибудь легкое и простое в выполнении.Это будет только логин сайта на 5-6 человек.Не нужно усложнять это.

Ответы [ 4 ]

3 голосов
/ 13 августа 2010

Библиотека jQuery имеет функцию ajax, которая имеет параметр «пароль» и «пользователь» для аутентификации Когда пользователь нажимает на кнопку «Войти», вы можете получить значение логина и пароля и передать функцию $ .ajax.

$('#submit').click(function() {
   $.ajax({
      url: 'authenticated.php',
      username: $('#login').val(),
      password: $('#passwd').val(),
      success: function(data) {
         //do something with data from the server
      }
   });
   return false;
});
2 голосов
/ 13 августа 2010

ИМХО, весь смысл использования HTTP-аутентификации заключается в возможности делегировать задачи аутентификации:

  1. Веб-сервер защищает от несанкционированного доступа к защищенным ресурсам
  2. Браузер запрашивает имя пользователя и пароль при необходимости

Итак, у вас есть работающая система с минимальными усилиями.

Теперь, если вы используете HTML-форму для запроса учетных данных, сервер узнает, кто вы, а браузер - нет: он запросит учетные данные, как только найдет заголовок ответа WWW-Authenticate и 401 код состояния. Чтобы это работало, браузер должен отправлять Authorization заголовок запроса на каждый HTTP-запрос; однако ваша форма не может указать браузеру отправлять соответствующий заголовок HTTP.

Конечно, вы можете написать свой собственный код аутентификации на стороне сервера в PHP, настроить сервер для анализа статических файлов через него и пропустить 401 и WWW-Authenticate, как только вы получите действительные учетные данные (которые затем должны быть хранится где-то еще, например, сеанс PHP). Но затем вы утратили все преимущества HTTP-аутентификации: на этом этапе пользовательский обработчик входа в систему с сеансами PHP станет гораздо более простым решением.

Подводя итог:

  • Если вам нужна простота, забудьте о формах HTML
  • Если вам нужны HTML-формы, напишите свой собственный код
0 голосов
/ 13 августа 2010

Как я могу использовать базовую аутентификацию HTTP и сделать так, чтобы пользователь отправлял свое имя пользователя и пароль в форме HTML

Ни за что.

, пожалуйста, порекомендуйте что-нибудьлегко и просто сделать.

сессий, куки.
google для PHP учебник по аутентификации и получить более 9000 статей

о, ну, одна из них

<?
if (isset($_POST['auth_name'])) {
  $name=mysql_real_escape_string($_POST['auth_name']);
  $pass=mysql_real_escape_string($_POST['auth_pass']);
  $query = "SELECT * FROM users WHERE name='$name' AND pass='$pass'";
  $res = mysql_query($query) or trigger_error(mysql_error().$query);
  if ($row = mysql_fetch_assoc($res)) {
    session_start();
    $_SESSION['user_id'] = $row['id'];
    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  }
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  exit;
}
if (isset($_GET['action']) AND $_GET['action']=="logout") {
  session_start();
  session_destroy();
  header("Location: http://".$_SERVER['HTTP_HOST']."/");
  exit;
}
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_SESSION['user_id']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) return;
else {
include 'your design here.php';
?>
<form method="POST">
<input type="text" name="auth_name"><br>
<input type="password" name="auth_pass"><br>
<input type="submit"><br>
</form>
<? 
}
exit;
?>

предназначен для помещения в файл и называется require '/path/auth.php'; в верхней части ваших сценариев

0 голосов
/ 13 августа 2010

Если я вас правильно понимаю, вам нужно использовать .htpasswd с .htaccess: http://tools.dynamicdrive.com/password/

...