2017-01-21 8 views
0

でAPI接続を非表示にすることができ、それがこの私は私がリンクして、特定のAPI呼び出しを実行する方法を知っているコードを持っているボタン

<a class="btn btn-default" href="https://testapi.internet.bs/Domain/Transfer/Initiate?ApiKey='.$user.'&Password='.$pass.'&Domain='.$domain.$ext.'" role="button">Restart Transfer</a> 

ようになりますどのようにこれは動作しますが、当然のページでそれはApiKey =(actualKey)とUserと私が望むものではないPASSWORDを表示します。これはLinkでどのように動作するのか理解していますが、代わりにボタンでこれを行うことができます。

<form method="post" action=""> 
<button type="submit" class="btn btn-warning btn-lg btn-block" name="restartTransfer">Restart Transfer</button> 
</form> 

とイム今、私はそれがこの

のように行われていないように(どのような方法は、PHP、jQueryのまたはJavaScriptを使用して評価され、これが道であるとは言わない)

if(isset($_POST['restartTransfer'])) { 

} 

としてPHPの行動を推測

$(document).ready(function(){ 
    $("button[name = 'restartTransfer']").click(function(){ 
     window.location = "https://testapi.internet.bs/Domain/Transfer/Initiate?ApiKey=<?php print $user;?>&Password=<?php print $pass;?>&Domain=<?php print $domain;?>"; 

}); 
}); 

しかし、これはそれを隠さない、これは単なる

.. APIキーをユーザに示すWebブラウザウィンドウを起動し、合格210

(可能ならば、同じページ内で)どのように私はボタンプッシュでのAPI情報を非表示にすることができます

アイデアは

  1. だろう、このボタン
  2. をクリックしますこれは、API呼び出しのURLは(示されていないロード)

例のためのdivコンテナと呼ばれる#messageで「完了」メッセージと

  • 返しありがとうございました。

  • 答えて

    2

    ブラウザのアドレスバーにある実際のURLをユーザーから隠す場合があります。ただし、ネットワーク要求のプロファイリング、またはWebページのソースの表示によって、資格情報が表示されるのを防ぐことはできません。 PHPプロキシを使用してより安全にすることをお勧めします。

    あなたは、PHP

    <?php 
    

    クラスEBCommon { パブリック関数の呼び出し($セッションID、$のSessionInfo、$ REALUSER、$ urlには、$パラメータ) { $で固定し、それを行うことができますカールを使用して

    $("button[name='restartTransfer']").click(function() { 
    
        $.ajax({ 
         url: "https://testapi.internet.bs/Domain/Transfer/Initiate?ApiKey=<?php print $user;?>&Password=<?php print $pass;?>&Domain=<?php print $domain;?>", 
         type: 'GET', 
         dataType: 'text/plain', 
         success: function(data) { 
          $('#message').text(data); // print results 
         }, 
         error: function(xhr) { 
          console.log('Error', xhr); 
         } 
        }); 
    
    }); 
    
    +0

    このスクリプトはWHMCS環境内で実行され、私たちのスタッフのためだけを意味しているため、高いセキュリティが問題ではありません。私が嫌いなのは、ページが私のスタッフのために無駄な情報を吐き出している白いAPI呼び出しページに読み込むことです。私は、バックグラウンドでページの読み込みが完了したときにカスタマイズされた文章 "Complete"を返すボタンプッシュでコールを実行したいと思います:)このコードはページを残さずにページをロードします:) –

    +0

    @SteiniPetur 、私が提供したコードで '$( '#message')。text( 'Complete')'を使ってください。 –

    +0

    注それはCORSは私が のXMLHttpRequestがhttps://testapi.internet.bs/Domain/Transfer/Initiate?ApiKey=testapi&Password=testpass&Domain=testdomain.comをロードすることはできません暗礁に乗り上げるている – charlietfl

    0

    apiUrl = "http://mycompany.edubrite.com/oltpublish/site/"; $ curl_request = curl_init();

    curl_setopt($curl_request, CURLOPT_URL, $apiUrl . $url); 
        curl_setopt($curl_request, CURLOPT_HEADER, 1); 
        curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($curl_request, CURLOPT_POSTFIELDS, $parameters); 
    
        if($sessionId != null){ 
         $cookieStr = "SESSION_ID=" . $sessionId; 
         if($sessionInfo != null){ 
          $cookieStr .= "; SESSION_INFO=" . $sessionInfo; 
         } 
         //print($cookieStr . "\n"); 
         curl_setopt($curl_request, CURLOPT_COOKIE, $cookieStr); 
    
         if($realUser != null){ 
          $headerStr = array("REAL_UNAME: ".$realUser); 
          curl_setopt($curl_request, CURLOPT_HTTPHEADER, $headerStr); 
         } 
        } 
    
        $response = curl_exec($curl_request); 
        //print($response); 
        $error = curl_error($curl_request); 
        $result = array(
            'body' => '', 
            'error' => '', 
            'http_code' => '', 
            'session_info' => '', 
            'session_id' => '' 
            ); 
        if ($error != "") 
        { 
         $result['error'] = $error; 
         return $result; 
        } 
    
        $header_size = curl_getinfo($curl_request,CURLINFO_HEADER_SIZE); 
        $header = substr($response, 0, $header_size); 
        $result['body'] = substr($response, $header_size); 
        $result['http_code'] = curl_getinfo($curl_request,CURLINFO_HTTP_CODE); 
        curl_close($curl_request); 
    
        preg_match_all('/Set-Cookie:\s{0,}(?P<name>[^=]*)=(?P<value>[^;]*).*?$/im', $header, $cookies, PREG_SET_ORDER); 
        foreach ($cookies as $match) { 
         if($match["name"] == "SESSION_ID"){ 
          $result['session_id'] = $match["value"]; 
         } 
         if($match["name"] == "SESSION_INFO"){ 
          $result['session_info'] = $match["value"]; 
         } 
        } 
        return $result; 
    } 
    

    } ?>

    関連する問題