通过表单发送基本认证信息

Vol*_*orm 15 php authentication login basic-authentication

我正在使用一个当前使用基本身份验证对话框登录系统的站点,这是您进入此处时获得的对话类型:http://www.dur.ac.uk/vm.boatclub/password/index .php 我没有设置这个系统,也不能轻易/快速地解决它,但它确实有效.但问题是,对话框对于告诉您必须使用哪些登录信息(即用户名和密码组合)并不是很有帮助,所以我想用表单替换它.我一直在想这不可能,但我想问一下,以便找出答案.

是否可以设置一个HTML表单,将数据发送到服务器,使其以与使用此对话框相同的方式接受它?或者,是否可以设置一个PHP脚本,该脚本将采用普通表单数据并以某种方式将其传递给服务器,以便它登录?

编辑:在被告知这是基本身份验证后,我四处寻找并找到了一种有效的方法并让用户持续登录.但是,这在Internet Explorer中不起作用.解决方案只是将用户重定向到: http:// username:password@www.dur.ac.uk/vm.boatclub/password/index.php 但是由于大约3年前的网络钓鱼使用,Internet Explorer将其删除了.有没有办法使用JavaScript来让浏览器以这种方式访问​​该网站?或者我只需要改变我的用户界面?

Vol*_*orm 11

经过一番研究后,我发现了一种适用于Chrome和IE的方法,这就是我测试过的所有方法,但代码的逻辑并没有暗示它应该在任何地方都能破解.它基于这篇文章:

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

这是深入的,但其关键在于 - 在表单提交中,您将AJAX请求发送到基本的经过身份验证的文件夹中.AJAX请求可以接受基本身份验证的用户名和密码信息,并且一旦浏览器在该领域获得授权就进行了authed,即它将保持登录状态.前一篇文章是用纯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;
    });
  });
Run Code Online (Sandbox Code Playgroud)

这实现了我想要的,并且相对简单易懂,但是我会恳求任何想要这样做的人,并且不知道基本的auth出去做研究!


Alf*_*red 8

您可以用表单替换它.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; 
?> 
Run Code Online (Sandbox Code Playgroud)

选项1

代理一切只是呼应 $result

选项2

$result状态代码!= 200 读取标题,然后输入错误的登录信息.用户应该再次输入表格.如果输入了状态代码== 200权限凭证,则应通过发送标头进行http基本身份验证.

header("Authorization: Basic " . base64_encode($username . ":" . $password);
Run Code Online (Sandbox Code Playgroud)

您不应该在发送标头之前回显任何数据($ result),否则您将收到错误

一些快速链接: