Форма входа в систему для основного автора Http

Я запускаю приложение Perl, названное bitlfu. Для входа в систему это использует что-то как Apache HTTP Основной Автор, но не форма. Я хочу сделать форму для входа в систему с полем имени пользователя и пароля. Я попробовал JavaScript и PHP без результатов до настоящего времени.

Таким образом, я нуждаюсь в помощи!

PS: этот вид работ URL

http://user:password@host.com
12
задан Pouyan 3 September 2016 в 12:41
поделиться

2 ответа

Я думаю, что простой JavaScript типа:

document.location='http://' + user + ':' + pass + '@mydomain.tld';

должен сделать работу.

Итак, по сути, вам нужно создать форму с полем user и pass, а затем при отправке использовать часть JavaScript, приведенную здесь:

<form method="post" onsubmit="javascript:document.location='http://' + $('login') + ':' + $('pass') + '@mydomain.tld';">
    <input type="text" name="login" id="login" />
    <input type="password" name="pass" id="pass" />
    <input type="submit" value="ok"/>
</form>

где $() - это document.getElementById или jquery или что-то подобное. Я использовал функцию $(), чтобы сделать код короче. Вот реализация, которая работает не на всех браузерах. Опять же, посмотрите jQuery для кроссбраузерного решения.

function $(_id) { return document.getElementById(_id); }

В противном случае, вы можете использовать php и перенаправить пользователя с указанием местоположения заголовка.

php way:

<?php

if (isset($_POST['login']) && isset($_POST['password'])) { header('Location: ' . urlencode($_POST['login']) . ':' . urlencode($_POST['password']) . '@domain.tld'); }
else
{
?>
<form method="post" onsubmit="javascript:document.location='http://' + $('login') + ':' + $('pass') + '@mydomain.tld';">
    <input type="text" name="login" id="login" />
    <input type="password" name="pass" id="pass" />
    <input type="submit" value="ok"/>
</form>

<?php
}
7
ответ дан 2 December 2019 в 21:42
поделиться

Вы можете перенаправить пользователя на http://user:password@host.com с помощью Perl, или используя JavaScript. Я не знаю Perl, поэтому я покажу вам JS:

function submitted() {
    document.location = "http://" + document.getElementById("username").value + ":" + document.getElementById("password").value + "@host.com";
}

<form onSubmit="submitted">...blablabla...</form>

Это должно работать. Единственная проблема в том, что это показывает пароль в URL.


Потрясающий способ AJAX с использованием jQuery:

$.ajax({
   'url': 'http://host.com/',
   //'otherSettings': 'othervalues',
   username: $("username").val(),
   password: $("password").val()
   },
   sucess: function(result) {
     alert('done');
   }
});

Окончательный способ на Perl (я думаю)

$username = # somehow get username
$password = # somehow get password
use CGI;
my $query=new CGI;
print $query->redirect('http://host.com/');
4
ответ дан 2 December 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: