2016-05-02 12 views
0

私はAJAX + PHP + .htaccessを使用してアップロードスクリプトをパスワードで保護しようとしています。AJAXと.htaccessを使用してパスワードの入力を求める方法

私のテストウェブサイトはhttp://scrabble.stats.org.pl/test/gcg/です。ドロップダウンリストから1つのオプションを選択すると、テーブルが表示されます。次に、右端の列に「Dodaj」(「追加」)ボタンが表示されます。彼らの「変更」イベントがline #25でAJAX(以下、最小限のバージョン)で処理されます

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(); 
        } 
       } 
      }); 
     }); 
    } 
}; 

upload.phphereを見つけることができます。アップロードされたファイルの内容をデータベースに保存するだけです。 successまたはerrorの状態で$response_arrayを返します。

さて、私は.htaccessファイルで私のサーバー上のフォルダを保護する方法を知っているし、それが正常に動作します(http://scrabble.stats.org.pl/test/gcg/uplをチェックアウト):、

AuthType Basic 
AuthUserFile "/usr/auth.passwd" 
require valid-user 
AuthName "Protected site" 

だけupload.phpを保護することが可能なようにユーザーが「追加」ボタンをクリックしたときにウェブサイトからパスワードが要求されますか?

私はthisthisthisを発見し、それらの解決策を試してみましたが、彼らは動作していないようです。通常、私はクロームコンソールでこのエラーを取得しています:

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

あなたの最初のリンクは正しいことをしているようです。

this postで見られるようにアドインボタンをクリックすると、あなたのupload.php

のユーザ名とパスワードを要求して自分でポップアップまたはフォームを表示する必要があるときあなたは、サーバにこれらのデータを提出することができます。

btoaメソッドは、データをbase64でエンコードします。

基本的には、Basic-Auth( "Authorization"、...)のヘッダーを送信し、ユーザー名とパスワードを入力します。

私は上記の解決策を理解していない可能性があります。まず、私はbtoa(username + ":" + password)の部分についてはわかりません。それらの特別なキーワードですか、私はユーザーを公開することになっていますか?これらのアプローチをパスしますか?

あなたのサーバーにログインするときは、必ずユーザー名とパスワードを送信する必要があります。 btoa(username + ":" + password)usernamepasswordは、(上記のログインフォームからデータを読み込むことで)設定する必要のある変数です。

関連する問題