我创建了一个允许删除用户属性的php脚本。该脚本首先查找与用户关联的所有属性,然后循环以删除所有这些属性。
当我为某个用户运行它时,它会转到foreach循环并打印出所有属性( $ name2 ),但它似乎卡在 curl_fetch上部分。当我尝试拉出属性时,它们仍然存在于用户。任何想法为什么会这样?代码如下,供您查看。提前谢谢。
<?php
$user=$_GET['userid'];
$user_id=str_replace(array('@', '#'), array('%40', '%23'), $user);
print "User-id: $user";
print "<br /><br />";
$url=("https://admin:password@oursite.com/@api/users/=$user_id/properties");
$xmlString=file_get_contents($url);
$delete = "https://admin:password@oursite.com/@api/users/=$user_id/properties/";
$xml = new SimpleXMLElement($xmlString);
function curl_fetch($url,$username,$password,$method='DELETE')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch,CURLOPT_USERPWD,"$username:$password");
return curl_exec($ch);
}
print "The following properties have been removed: ";
print "<br />";
if(!count($xml->property)) die('No properties exist for this user');
foreach($xml->property as $property) {
$name = $property['name'];
$name2=str_replace(array('@', '#'), array('%40', '%23'), $name);
print $name2;
print "<br />";
curl_fetch($delete . $name2,'admin','password');
}
?>
答案 0 :(得分:0)
您将该网址作为GET查询。您确定执行删除类型调用至少不需要POST吗?想想如果一个网络蜘蛛得到一个网址列表并通过简单地索引它而无辜地整理你的整个网站会产生的混乱?
我的不好,没注意到DELETE是curl函数中的默认方法。
我建议在curl函数中回显完整的URL,并验证它是否正确构建。我看不出其他任何明显错误的代码,所以我猜猜网址不正确。