2017-10-13 10 views
0

Ich habe versucht und recherchiert sehr hart, aber ich habe keine Antwort gefunden.cURL zu PHP mit Header und Benutzername aber ohne Passwort

Ich habe folgende Curl:

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

Testing in einem Kommando-Shell funktioniert perfekt. Aber wie kann ich es mit PHP arbeiten? Normalerweise ist es "Benutzername: Passwort", aber ich habe "Benutzername:", was seltsam ist.

Mein PHP-Code bisher:

<?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); 
?> 

Haben Sie eine Ahnung, wie es gegeben -u „Benutzername:“ arbeiten lassen statt -u „Benutzername: Passwort“?

Grüße

UPDATE
unten für die Antwort finden!

+1

Ist der Raum am Ende des ' '85a15somemorecharacters4550:'' ein Tippfehlers? Das wird ein einzelnes Leerzeichen als Passwort senden. – iainn

+0

danke für Ihre Antwort @iainn. Sorry, das war ein Tippfehler. Ich habe meinen Beitrag entsprechend bearbeitet. – TrojanRabbit

Antwort

0

So konnte ich es doch lösen.

  1. Dank print curl_error($ch); direkt nach $output = curl_exec($ch); fand ich heraus, dass es ein „Problem SSL-Zertifikats: selbst signiertes Zertifikat in Zertifikatskette“.
  2. Also musste ich das Zertifikat herunterladen und es in die Anfrage wie folgt aufnehmen: curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert-2017-09-20.pem"); Oder Sie könnten curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); verwenden, die jedoch nicht empfohlen wird.
  3. Dank Echo $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); fand ich heraus, dass meine Header fehlten. Ich muss CURLOPT_HTTPHEADER anstelle von CURLOPT_HEADER verwenden.

So, hier ist mein voller Code:

<?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; 
?> 
Verwandte Themen