Используйте curl в php скрипте - PullRequest
4 голосов
/ 30 августа 2010

Я пытаюсь создать скрипт, который удалит все пользовательские свойства для конкретного человека.Я могу использовать вызов API для получения свойств пользователей.И я пытаюсь использовать API для удаления каждого свойства.Но у меня проблема с этим.Ниже приведен код:

$delete = "http://www.ourwiki.com/@api/DELETE:users/$user_id/properties/%s";
$xml = new SimpleXMLElement($xmlString);

foreach($xml->property as $property) {
  $name = $property['name']; // the name is stored in the attribute
  file_get_contents(sprintf($delete, $name));
}

Я считаю, что мне нужно использовать curl для фактического удаления.Вот пример этой команды (свойство = что-то):

curl -u username:password -X DELETE -i http://ourwiki.com/@api/users/=john_smith@ourwiki.com/properties/something

-u Обеспечивает аутентификацию внешнего пользователя.

-X Указывает метод HTTP-запроса.

-i Выводит заголовки ответа HTTP.Полезно для отладки.

Это то, что я могу включить прямо в существующий скрипт?Или мне нужно еще кое-что сделать?Любая помощь будет принята с благодарностью.

обновление:

<?php

$user_id="john_smith@ourwiki.com";

$url=('http://aaron:12345@192.168.245.133/@api/deki/users/=john_smith@ourwiki.com/properties');
$xmlString=file_get_contents($url);

$delete = "http://aaron:12345@192.168.245.133/@api/deki/DELETE:users/$user_id/properties/%s";
$xml = new SimpleXMLElement($xmlString);

 function curl_fetch($url,$username,$password,$method='DELETE')
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // returns output as a string instead of echoing it
    curl_setopt($ch,CURLOPT_USERPWD,"$username:$password"); // if your server requires basic auth do this
    return  curl_exec($ch);
}

foreach($xml->property as $property) {
  $name = $property['name']; // the name is stored in the attribute
  curl_fetch(sprintf($delete, $name),'aaron','12345');
}

?>

Ответы [ 3 ]

2 голосов
/ 30 августа 2010

Вы можете использовать php curl или использовать оболочку для скручивания, используя exec .

Если curl уже включен на вашем веб-сервере, используйте php curl.Если вы не можете установить php-curl, скопируйте версию curl из командной строки, и вы готовы.

В php-curl для установки метода удаления выполните:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

edit

Примерно так:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.ourwiki.com/@api/whatever/url/you/want/or/need");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // returns output as a string instead of echoing it
curl_setopt($ch,CURLOPT_USERPWD,"$username:$password"); // if your server requires basic auth do this
$output = curl_exec($ch);

edit2

вставьте этот код в функцию:

function curl_fetch($url,$username,$password,$method='DELETE')
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // returns output as a string instead of echoing it
    curl_setopt($ch,CURLOPT_USERPWD,"$username:$password"); // if your server requires basic auth do this
    return  curl_exec($ch);
}

и замените вызов file_get_contents() в вашем скрипте новой функцией.

curl_fetch(sprintf($delete, $name),'aaron','12345');

Готово.

0 голосов
/ 30 августа 2010
0 голосов
/ 30 августа 2010

выглядит так, как будто вы ищете вызов функции curl в php, включая curl_setopt

...