Подключение к McMyAdmin с помощью PHP file_get_contents () - PullRequest
0 голосов
/ 06 февраля 2012

Я пытаюсь подключиться к McMyAdmin с помощью функции PHP file_get_contents() Когда я запускаю следующий код:

<?php
$url = 'http://mc.mywebsite.com/data.json?req=status';
$username = 'myuser';
$password = 'mypass';

$context = stream_context_create(array(
    'http' => array( 
      'method'  => 'POST', 
      'header'  => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)). 
                   "Content-type: application/x-www-form-urlencoded\r\n", 
      'timeout' => 3, 
    )
));
$data = file_get_contents($url, false, $context);
echo $data;
?>

Я получаю ошибку 401. Из того, что я прочитал, это должно пройти через аутентификацию. Я что-то не так делаю?

1 Ответ

1 голос
/ 06 февраля 2012

Вместо этого используйте CURL:

<?php
    $Protocol = "http";
    $Server = "localhost:8080";
    $Username = "admin";
    $Password = "admin";

    //$Username:$Password@
    $fullURL = "$Protocol://$Server/data.json?" . $_SERVER['QUERY_STRING'];

    $curl_handle = curl_init();

    curl_setopt($curl_handle, CURLOPT_URL, $fullURL);
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_handle, CURLOPT_USERPWD, "$Username:$Password");
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array ("Accept: application/json"));

    $buffer = curl_exec($curl_handle);

    if ( $error = curl_error($curl_handle) ) 
    echo 'ERROR: ',"$error";

    curl_close($curl_handle);

    $Response = $buffer;

    header('Content-Type: application/json');
    echo $Response;
?>

Обратите внимание, что без заголовка «Accept: application / json» - McMyAdmin 2 будет отклонять запросы API.

...