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出去做研究!
您可以用表单替换它.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)
代理一切只是呼应 $result
从$result状态代码!= 200 读取标题,然后输入错误的登录信息.用户应该再次输入表格.如果输入了状态代码== 200权限凭证,则应通过发送标头进行http基本身份验证.
header("Authorization: Basic " . base64_encode($username . ":" . $password);
Run Code Online (Sandbox Code Playgroud)
您不应该在发送标头之前回显任何数据($ result),否则您将收到错误
| 归档时间: |
|
| 查看次数: |
27720 次 |
| 最近记录: |