2017-10-13 43 views
0

我一直在努力和研究很辛苦,但我還沒有找到答案。cURL到PHP與標題和用戶名,但沒有密碼

我得到了以下捲曲:

curl "https://someurl" -H "client-id: Fsomemorecharacters8=" -u "8somemorecharacters0:" 

測試在命令shell完美的作品。 但是,我怎樣才能使它與PHP一起工作? 通常它的「用戶名:密碼」,但我得到了「用戶名:」這很奇怪。

我的PHP代碼至今:

<?php 
    $ch = curl_init(); 
    $url = 'https://someurl'; 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, array('client-id: FHP20c+somemorecharacters8=')); 
    curl_setopt($ch, CURLOPT_USERPWD, '85a15somemorecharacters4550:'); //Issue is here i think 

    $output = curl_exec($ch); 

    curl_close($ch); 
?> 

你有任何想法如何使工作給予-U「用戶名」,而不是-U「用戶名:密碼」?

問候

UPDATE
的回答,請參閱下文!

+1

是' '85a15somemorecharacters4550:' 末端的空間'一個錯字?這將發送一個空格作爲密碼。 – iainn

+0

感謝您的回答@iainn。 對不起,這是一個錯字。我相應地編輯了我的帖子。 – TrojanRabbit

回答

0

所以我終於能夠解決它。

  1. 由於print curl_error($ch);$output = curl_exec($ch);之後我發現有一個「SSL證書問題:自簽名證書中的鏈證書」。
  2. 因此,我需要下載證書並將其包含在請求中,如下所示:curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert-2017-09-20.pem");或者您可以使用curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);,但不建議這樣做。
  3. 感謝回覆$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);我發現我的標題丟失了。我需要使用CURLOPT_HTTPHEADER而不是CURLOPT_HEADER

因此,這裏是我的全碼:

<?php 

    $ch = curl_init(); 
    $url = 'https://someurl'; 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert-2017-09-20.pem"); 
    //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('client-id: client-id: FHP20c+somemorecharacters8=')); 
    curl_setopt($ch, CURLOPT_USERPWD, '885a15somemorecharacters4550:'); 

    $output = curl_exec($ch); 
    print curl_error($ch); 
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

    curl_close($ch); 

    file_put_contents('output.txt', $output); 

    echo '<br><b>Output</b><br>' . $output; 
    echo '<br><b>Status-Code</b><br>' . $status_code; 
?>