我们有一个由第三方开发者设计的wiki。我们遇到的问题是,已经“无效”的用户仍会出现在搜索中。阻止用户被看到的工作是删除与该用户相关联的属性。
要访问用户属性,我们会调用api传递url编码的用户名是这种格式:http://www.ourwiki.com/@api/users/=john_smith%40ourwiki.com/properties
然后,这将返回具有专有项目的XML。
下一步是我不确定如何继续。我们需要以某种方式遍历所有属性并获取属性的名称,以便我们可以删除它们通过API进行Delete调用。删除的格式为DELETE:users / {userid} / properties / {key}
理想情况下,一旦我们有了工作脚本,将用户名作为参数传递会很好。
我在使用PHP中的API方面有些新手,所以如果有人有一些想法或可以帮助解决这个问题,我将不胜感激。
请参阅此链接以下载属性xml文件: http://queencitytech.com/properties.zip
以下是撤消用户属性后返回的内容:
12010-04-29T04:39:29ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngJohnh2010-04-29T04:39:29ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngJohn2010-04 -29T04:39:29ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngSmith2010-04-29T04:39:30ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngSmith, John2010-04-29T04:39:30ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngJohn2010-04-29T04:39:31ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.png757E2010-04-29T04: 39:31ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngExt: 61322010-04-29T04:39:31ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngJohn_Smith@ourwiki.com2010-04-29T04:39:32ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngmiddleware/图像/爆头/ 01_799 / 01_799_hs.jpg2010-04-29T04:39:32ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngmiddleware/images/lifestyle/01_799/01_799_ls.jpg2010-04-29T04:39:32ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp: //www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngImplementation2010-04-29T04:39:33ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngWeil, T2010-04-29T04:39:33ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngCo-op2010-04-29T04:39:34ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.png0000-00- 00 00:00:002010-04-29T04:39:34ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngCoop2010-05-02T04:40:35ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.pngfalse2010- 05-03T19:09:34ZJohn_Smith @ ourwiki.comJohn_Smith @ ourwiki.comJohn_Smith @ ourwiki.com52909eac4d19209592168dc96f3d4fcahttp://www.avatar.com/avatar/52909eac4d19209592168dc96f3d4fca.pngCincinnati2010-05-14T04:15:13ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/头像/ 0ee8d636cdd5e57469516332b9325cbc.png4572010-07-16T04:50:13ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.png2010-07-14 16:06:232010-07-16T04:50:17ZAdminAdmin0ee8d636cdd5e57469516332b9325cbchttp://www.avatar.com/avatar/0ee8d636cdd5e57469516332b9325cbc.png
这是包含var_dump(array($ delete,$ property))的文件 http://queencitytech.com/deletescript.php.html
答案 0 :(得分:0)
假设您的XML存储在变量名$xmlString
中,而用户ID存储在变量$user_id
中,您可以使用以下代码:
$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));
}
或者如果您知道所有可能的属性,那么拥有一个可以一次完成所有调用的函数会更容易,而无需事先读取属性。
$properties = array(); // array of property names
$delete = "http://www.ourwiki.com/@api/DELETE:users/$user_id/properties/%s";
foreach($properties as $property) {
$name = $property['name'];
file_get_contents(sprintf($delete, $name));
}