2012-02-02 11 views
0
  • 私はサイトwww.abc.domain.comを.htaccess & .htpasswdで保護しています。
  • www.abc.domain.comにアクセスしてデータをチェックする必要があるcallback.phpファイルを作成しました。このファイルは他のサーバー、他のドメインにあります。
  • 私はcurlを使用してリクエストしています。

CURLOPT_USERPWDはアクセス保護されたフォルダに使用できます。しかし、私のcallback.phpファイルでは、CURLOPT_USERPWDを持っていません。ファイルを変更し、CURLOPT_USERPWDを追加して動作させるにはどうすればよいですか?あなたがここに私のファイルを見ることができます保護されたフォルダへのPHPファイルアクセスを許可しますか?

<?php 
function callback_start() { 
    $yoururl = "http://abc.domain.com"; 
    include "key.php"; 
    $pass_array['key'] = $key; 
    $pass_array['domain'] = $_SERVER['SERVER_NAME']; 

    function confirm($url, $data) { 
     $options = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, 
      CURLOPT_FOLLOWLOCATION => false, CURLOPT_AUTOREFERER => true, 
      CURLOPT_CONNECTTIMEOUT => 50, CURLOPT_TIMEOUT => 50, CURLOPT_MAXREDIRS => 0, 
      CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $data, CURLOPT_SSL_VERIFYHOST => 0,); 

     $ch = curl_init($url); 
     curl_setopt_array($ch, $options); 
     $content = curl_exec($ch); 
     curl_close($ch); 
     return $content; 
    } 

    $info = confirm($yoururl . "/folder/index.php", $pass_array); 
    if ($info['status'] == "2") { 
     return die("Suspended!"); 
    }elseif($info['status'] == "3") { 
     return die("Incorrect"); 
    }elseif($info['status'] != "1") { 
     return die("Error!"); 
    } 
} 
?> 
+1

あなたは自分の$ options配列にそれを追加してみてくださいましたか? –

+0

'curl_setopt($ curlObj、CURLOPT_USERPWD、" $ username:$ password ");'を配列として使う方法がわかりません。 –

答えて

0

をそれはストレッチかもしれないが、あなたが同じローカルネットワーク上のサーバーを実行する場合は、この操作を行うことができます。

Using .htaccess to mask a domain?

応用ここに:(Apache設定ファイルhttpd.confのフード)

<VirtualHost *:80> 
    ServerName private.abc.com 
    ProxyRequests  Off 
    ProxyPreserveHost On 
    <Proxy *> 
    Order deny,allow 
    Allow from all 
    </Proxy> 
    ProxyPass/http://protected-site-local-ip:80/private/ 
    ProxyPassReverse/http://protected-site-local-ip:80/private/ 
    <Location /> 
    Allow from all 
    </Location> 
</VirtualHost> 

PHPが実行されているのでプロキシされたサイトにアクセスするのに問題はありません(パスワードはなく、ローカルネットワークからしかアクセスできない)。プロキシされたパブリックドメインを公開しないようにしてください。

まだ試していませんが、PHPから直接ローカルネットワーク上のファイルに移動できますか? (例えば、http://10.149.2.1/www/private/stuff-you-need)?プロキシメソッドを完全にバイパスすることができます。

0

まあ、私はこれを試していないが、私の考えは、あなたがこのようにそれを行うだろうということです。

function confirm($url, $data) { 
     $options = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, 
      CURLOPT_FOLLOWLOCATION => false, CURLOPT_AUTOREFERER => true, 
      CURLOPT_CONNECTTIMEOUT => 50, CURLOPT_TIMEOUT => 50, CURLOPT_MAXREDIRS => 0, 
      CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $data, CURLOPT_SSL_VERIFYHOST => 0, 
      CURLOPT_USERPWD => $username.":".$password,); 

     $ch = curl_init($url); 
     curl_setopt_array($ch, $options); 
     $content = curl_exec($ch); 
     curl_close($ch); 
     return $content; 
    } 
関連する問題