Отправка базовой информации аутентификации через форму

Я работаю над сайтом, который в настоящее время использует базовую систему регистрации диалогового окна аутентификации, это тип диалога, который вы получаете, если вы здесь: http://www.dur.ac.uk/vm.boatclub/password/index .php Я не устанавливал эту систему и не могу легко или быстро ее обойти, но она работает. Однако проблема заключается в том, что диалоговое окно не очень полезно сообщать вам, какую регистрационную информацию вы должны использовать (то есть какую комбинацию имени пользователя и пароля), и поэтому я хотел бы заменить ее формой. Я думал, что это невозможно, но я хотел спросить, чтобы узнать.

Можно ли настроить HTML-форму, которая отправляет данные на сервер таким образом, чтобы она принимала его так же, как и при использовании этого диалогового окна? В качестве альтернативы можно ли настроить PHP-скрипт, который будет принимать нормальные данные формы и обрабатывать его каким-то образом передавая его на сервер, чтобы он входил в систему?

Изменить: после того, как мне сообщили, что это базовая аутентификация, я обошел и сумел найти способ, который работает, и постоянно удерживает пользователя во включенном состоянии. Однако это не работает в Internet Explorer. Решение было просто перенаправить пользователя на: http: // имя пользователя: пароль@www.dur.ac.uk/vm.boatclub/password/index.php. Но Internet Explorer удалил его из-за использования фишинга около 3 лет назад. Есть ли способ использовать javascript, чтобы заставить браузер получить доступ к сайту таким образом? Или мне нужно просто изменить свой интерфейс?

После справедливого исследования я нашел способ, который работает как в Chrome, так и в IE, это все, что я тестировал, но логика кода не предполагает, что он должен сломаться в любом месте. Он основан на этой статье:

http://www.peej.co.uk/articles/http-auth-with-html-forms.html

Это довольно подробно, но суть этого заключается в следующем: в форме submit вы делаете запрос AJAX в базовую аутентифицированную папку. Запросы AJAX могут принимать информацию о имени пользователя и пароле для базового auth, и после того, как браузер уйдет в автономный режим после его авторизации в этой области, то есть он останется включенным. Предыдущая статья делает это в чистом javascript, поэтому добавьте что-то другое, кроме простого объяснения ссылка здесь (надеюсь, довольно прозрачная) реализация с использованием jQuery:

$(document).ready(function() { $('#loginForm').submit(function() { var username = $('#usernameInput').val(); var password = $('#passwordInput').val(); $.ajax( { 'password' : password, 'username' : username, 'url' : 'http://www.website.com/basic-auth-file.php', 'type' : 'GET', 'success' : function(){ window.location = 'http://www.website.com/basic-auth-file.php'; }, 'error' : function(){ alert('Bad Login Details');}, } ); return false; }); }); 

Это достигало того, чего я хотел, и относительно просто понять, однако я бы умолял всех, кто хотел, чтобы это вышло и не знало об основном ауте, чтобы выйти и провести исследование!

Вы можете заменить его формой. http://www.dur.ac.uk/vm.boatclub/password/index.php использует базовую аутентификацию доступа .

аутентификация основного доступа

Что вы можете сделать, это выполнить базовую аутентификацию через curl

 <?php // HTTP authentication $url = "http://www.dur.ac.uk/vm.boatclub/password/index.php"; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword"); $result = curl_exec($ch); curl_close($ch); //echo $result; ?> 

Опция 1

Прокси-сервер всего лишь echo'ing $result

Вариант 2

Чтение заголовков из $result и код статуса! = 200 введена неверная информация для входа. Пользователь должен ввести форму еще раз. Если введен код состояния == 200 правильных учетных данных, и вы должны выполнить базовую аутентификацию HTTP, отправив заголовки.

 header("Authorization: Basic " . base64_encode($username . ":" . $password); 

Вы не должны эха из любых данных ($ result) перед отправкой заголовка else вы получите сообщение об ошибке

Некоторые быстрые ссылки: