2017-03-27 4 views
1

opencartのcurl phpのHTTP_HEADERSに関連する問題があります。以下のコードは発信者です。基本認証サーバー関連のPHP

$ch = curl_init(); 

    $url = 'http://aaa.com/index.php?route=common/home/getTotalCustomer'; 
    $url2 = 'http://bbb.com/index.php?route=common/home/getTotalCustomer'; 
    $url3 = 'http://ccc.com/index.php?route=common/home/getTotalCustomer'; 

    $header = array('Authorization:Basic ' . base64_encode('user:password')); 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FAILONERROR, true); 
    curl_setopt($ch, CURLOPT_HEADER, false); 

    $results = curl_exec($ch); 

    echo '<pre>'; 
    print_r(json_decode($results, true)); 
    echo '</pre>'; 

受信コード以下のように:

public function getTotalCustomer(){ 
    $json = array(); 

    $this->load->model('account/customer'); 

    if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){ 
     if(($_SERVER['PHP_AUTH_PW'] == 'password') && ($_SERVER['PHP_AUTH_USER'] == 'user')){ 
      $json['total_customer'] = $this->model_account_customer->getTotalCustomer(); 
     } 
    } else{ 
     $json['message'] = 'failed'; 
    } 

    $this->response->addHeader('Content-Type: application/json'); 
    $this->response->setOutput(json_encode($json)); 
} 

私は別のサーバーで複数のドメインにしようとしました。一部のサーバーはデータを返すことができますが、一部のサーバーはデータを返すことができません。どうして?

+0

curl_setopt($ ch、CURLOPT_USERPWD、$ username); '。$ password);' – arkascha

+0

このコードに変更を加えることはできません.. – LunGuang

+0

これは基本認証がどのように行われるかです。応答できないサーバーで何かが失敗する可能性がありますか?デバッグする必要がありますので、httpサーバのエラーログファイルを調べてください。 – arkascha

答えて

0

送信しているヘッダーが正しくありません。
あなたはそれが
Authorization: Basic <username:password>
ノートスペースでなければなりません
Authorization:Basic <username:password>
を渡しています。