我正在尝试使用AJAX + PHP + .htaccess使用密码保护上传脚本。
我的测试网站位于http://scrabble.stats.org.pl/test/gcg/。如果从下拉列表中选择一个选项,则会出现一个表格。然后,在最右边的列中,您将看到" Dodaj" ("添加")按钮。他们的改变"事件由AJAX在line #25处理(下面的最小版本):
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
$('.upload').on('change', function(event) {
var file_data = $(event.target).prop('files')[0];
//console.log(file_data);
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: 'upload.php', // point to server-side PHP script
dataType: 'text', // what to expect back from the PHP script, if anything
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function(php_script_response){
var response = $.parseJSON(php_script_response);
if ( response.status == 'error') {
alert( response.errormsg );
}
else {
$(event.target).closest('.fileUpload').hide();
}
}
});
});
}
};
可以找到{p> upload.php
here。它只是将上传文件的内容保存到数据库中。它会返回$response_array
个success
或error
个州。
现在,我知道如何使用.htaccess文件保护我服务器上的文件夹并且工作正常(请查看http://scrabble.stats.org.pl/test/gcg/upl):
AuthType Basic
AuthUserFile "/usr/auth.passwd"
require valid-user
AuthName "Protected site"
是否可以仅保护upload.php
,以便当用户点击该网站时,网站会提示输入密码"添加"按钮吗
我找到this,this和this并尝试了这些解决方案,但它们似乎无法正常工作。通常我在Chrome控制台中收到此错误:
http://scrabble.stats.org.pl/test/gcg/upload/upload.php
Failed to load resource: the server responded with a status of 405 (Not
Allowed)
恐怕我可能不理解上述解决方案。首先,我不确定btoa(username + ":" + password)
部分。那些特殊的关键词还是我应该公开用户:传递那些方法?
答案 0 :(得分:0)
你的第一个链接似乎做对了。
点击添加按钮时,您需要自己显示弹出窗口或表单,请求上传用户名和密码.php
然后,您可以将这些数据提交到服务器,如this post中所示。
btoa方法将您的数据编码为base64。
基本上您只需发送Basic-Auth标题("授权",...),并提供用户名和密码作为数据。
恐怕我可能不理解上述解决方案。首先,我不确定btoa(用户名+":" +密码)部分。那些特殊的关键词还是我应该公开用户:传递那些方法?
当您登录服务器时,您始终必须发送用户名和密码。在btoa(username + ":" + password)
username
和password
中是您必须设置的变量(通过从上述登录表单中读取数据)。