2012-02-02 2 views
0
  • У меня есть сайт www.abc.domain.com, защищенный .htaccess & .htpasswd.
  • У меня есть файл callback.php, который должен получить доступ к www.abc.domain.com и проверить данные. Этот файл находится на другом сервере, в другом домене.
  • Я использую завиток для запроса.

Я вижу, что 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

Пробовали ли вы просто добавить его в массив $ вариантов? –

+0

Я не уверен, как использовать 'curl_setopt ($ curlObj, CURLOPT_USERPWD," $ username: $ password ");' as array. –

ответ

0

Это может быть растянуть, но если запускать серверы на одной и той же локальной сети, вы можете сделать это:

Using .htaccess to mask a domain?

Applied здесь: (питание для файла конфигурации 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 s в локальной системе, он не будет иметь проблем с доступом к прокси-сайту (без пароля, но доступным только из локальной сети). Убедитесь, что вы не предоставили прокси-серверу общественное достояние.

Я еще не пробовал, но можете ли вы перейти от 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; 
    } 
Смежные вопросы