2010-10-18 3 views
1

Я создал скрипт php, который позволит удалить пользовательские свойства. Сначала скрипт находит все свойства, связанные с пользователем, а затем петли, чтобы удалить все из них.Проблема с функцией CURL fetch

Когда я запускаю это для определенного пользователя, он получает вниз к петле Еогеаспа и выводит все свойства ($ Имя2), но это, кажется, застревает на 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:[email protected]/@api/users/=$user_id/properties"); 
    $xmlString=file_get_contents($url); 

    $delete = "https://admin:[email protected]/@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

Вы попадаете в этот URL как запрос GET. Вы уверены, что выполнение вызова типа удаления не потребует, по крайней мере, POST? Подумайте о хаосе, который возникнет, если веб-паук получит список URL-адресов и невинно обнажил весь ваш сайт, просто проиндексируя его?

Мой плохой, не заметил, что DELETE был методом по умолчанию в вашей функции curl.

Я предлагаю повторить полный URL-адрес из функции curl и проверить правильность его построения. Я не вижу ничего плохого в коде, поэтому я предполагаю, что URL-адрес неверен.