开发者

Use curl in php script

开发者 https://www.devze.com 2023-01-14 08:05 出处:网络
I\'m trying to create a script that will delete all user properties for a particular individual. I\'m able to use an api call to get the users\' properties. And I\'m trying use a delete api to remove

I'm trying to create a script that will delete all user properties for a particular individual. I'm able to use an api call to get the users' properties. And I'm trying use a delete api to remove each property. But I'm having an issue doing so. Below is the code:

$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));
}

I believe I need to use curl to perform the actual delete. Here is an example of that command (property=something):

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

-u Provides external user authentication.

-X Specifies the HTTP request method.

-i Outputs the HTTP response headers. Useful for debugging.

Is this something that I can incorporate right into the existing script? Or is there something else I need to do? Any help would be greatly appreciated.

update:

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

fore开发者_JAVA百科ach($xml->property as $property) {
  $name = $property['name']; // the name is stored in the attribute
  curl_fetch(sprintf($delete, $name),'aaron','12345');
}

?>


You can use php curl, or shell out to curl using exec.

If curl is already enabled on you web server, go with php curl. If you cant install php-curl copy a command line version of curl and you are good to go.

In php-curl to set the delete method do:

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

edit

Something like this:

$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

stick that above code in a function:

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

and replace the call to file_get_contents() in your script with the new function.

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

Done.


looks like you are looking for the curl function calls in php, including curl_setopt


See: http://php.net/curl

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号