• If you are still using CentOS 7.9, it's time to convert to Alma 8 with the free centos2alma tool by Plesk or Plesk Migrator. Please let us know your experiences or concerns in this thread:
    CentOS2Alma discussion
  • Inviting everyone to the UX test of a new security feature in the WP Toolkit
    For WordPress site owners, threats posed by hackers are ever-present. Because of this, we are developing a new security feature for the WP Toolkit. If the topic of WordPress website security is relevant to you, we would be grateful if you could share your experience and help us test the usability of this feature. We invite you to join us for a 1-hour online session via Google Meet. Select a convenient meeting time with our friendly UX staff here.

Resolved PHP Curl POST don't works with X-API-Key

Yannick Croteau

New Pleskian
I'm trying to build a PHP function to get a user loging link in PHP.

The user/pass method works very well

PHP:
function getLinkUrlWithUser($account, $username, $password, $server){

    $url = "https://" . $server . ":8443/api/v2/cli/admin/call";
    $request = array("params" => array("--get-login-link", "-user", $account));

    # Set curl request
    $ch = curl_init( $url );
    $payload = json_encode($request);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload );
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:application/json", "Accept:application/json")) ;
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );

    # Send request.
    $result = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    curl_close($ch);

    # Print response.
    if ($curl_errno > 0) {
        echo "cURL Error ($curl_errno): $curl_error <br/>";
        return "";
    }else{
        $data = json_decode($result);
        if($data->code == 0){
            return $data->stdout;
        }else{
            echo "Curl Error code: $data->code <br/>";
            echo "Error message: $data->stderr <br/>";
            return "";
        };
    };
  
}

but if i'm trying to use the X-API-Key with that one :

PHP:
function getLinkUrl($account, $secretKey, $server){

    $url = "https://" . $server . ":8443/api/v2/cli/admin/call";
    $request = array("params" => array("--get-login-link", "-user", $account));
    $key = "X-API-Key:$secretKey";

    $ch = curl_init( $url );
    $payload = json_encode($request);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload );
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($key, "Content-Type:application/json", "Accept:application/json")) ;
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );

    # Send request.
    $result = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    curl_close($ch);

    # Print response.
    if ($curl_errno > 0) {
        echo "cURL Error ($curl_errno): $curl_error <br/>";
        return "";
    } else {
        $data = json_decode($result);
        if($data->code == 0){
            return $data->stdout;
        }else{
            echo "Curl Error code: $data->code <br/>";
            echo "Error message: $data->stderr <br/>";
            return "";
        }
    }
    
}

I always get back :

code: 1
stderr: You have entered incorrect username or password.

Even if I call a new key, the same result.

P.S. My python variante works very well!

Thank you!
Yannick
 
So at the end my code is good. It was a typo in a passed parameter. But the return error gived me a bad clue. If I had a bad json form error or something like that should be more appropriate.

Thank you!
 
Back
Top