0

編集

にパスワードをハッシュする行を追加して、人々が気を散らさないようにしました。


検証のために投稿パラメーターをチェックし、パラメーターが有効な場合は動的に生成されたファイルをダウンロードするサーバー側のphpファイルがあります。パラメータが無効な場合、php はその理由とともに json を返します。javascript から自分の php を呼び出して両方のケースを処理する方法が見つからないようです。

私のphpは次のようになります(簡略化):


PHP

<?php
     if(isset($_POST['Username']) && isset($_POST['Password']))
     {

     $dbPassword = *sql statement*
     $password = hash("sha256", $_POST['Password']);

     if($dbPassword==$password)
     {

     header('Content-Description: File Transfer');
     header('Content-Type: application/octet-stream');
     header('Content-Disposition: attachment; filename= 'somefile.zip');
     header('Content-Transfer-Encoding: binary');
     header('Expires: 0');
     header('Cache-Control: must-revalidate');
     header('Pragma: public');
     header('Content-Length: ' . filesize('somefile.zip'));
     ob_clean();
     flush(); 
     $bytesRead = readfile('somefile.zp');


    }
    else
    {

    $returnArray = array();

    $returnArray['Status']='Invalid'

    return json_encode[$returnArray];

    }

    }
?>

ファイルをダウンロードするだけでなく、jsonをテキストファイルとしてダウンロードするGETを使用してa hrefリンクでこれを試しましたが、これは私が望んでいるものではありません。また、POST を使用したいと思います。

私が試した2番目の方法は、ダウンロードするフォーム投稿を使用することでしたが、この方法でjson応答を取得できるかどうかはわかりません.


Javascript

function submitform()
{

var theForm = document.forms['myForm'];

    theForm.setAttribute("method", "post");
    var input = document.createElement('input');
    input.type = 'hidden';
    input.name = "UserName";
    input.value = "someuser";
    theForm.appendChild(input);
    theForm.submit();
}

最後に、ajax を使用してみましたが、ファイル データを取得している間、ブラウザにそれをファイルとしてダウンロードさせることができるかどうかわかりません。私が読んだことは、あなたができないことを示唆しています。

4

0 に答える 0