Wywołuję CURL dla metody POST. Problem jest z dostarczeniem parametrów dla checked[], który sam w sobie jest tablicą. Sposób jak poniżej nie działa zapewne dlatego, że dokleja oczekiwany łańcuch do klucza checked[] a nie tworzy osobne klucze checked w tablicy $post_plugin. Niestety drugiej opcji nie mogę zrealizować bo nie wiem jakie są wartości kluczy, jak widać poniżej klucze są puste.

Po za tym wartość $post_plugin['checked[]'] sama w sobie nie jest tablicą.

Finalny łańcuch powinien wyglądać tak (wywaliłem urlencode w celu łatwiejszego zobrazowania):
checked[]=all-in-one-seo-pack/all_in_one_seo_pack.php&checked[]=google-sitemap-generator/sitemap.php

  1. $post_plugin = array(
  2. '_wpnonce' => '',
  3. '_wp_http_referer' => '/wp-admin/update-core.php',
  4. 'upgrade' => 'Update Plugins',
  5. 'checked[]' => ''
  6. );
  7.  
  8.  
  9. if ($plugin) { //jesli uaktualniamy pluginy
  10. curl_setopt($curl, CURLOPT_POST, 0);
  11. curl_setopt($curl, CURLOPT_URL, $row['url']."wp-admin/update-core.php");
  12. $strona = curl_exec($curl);
  13.  
  14.  
  15. preg_match('@name="_wpnonce" value="(.*)" />@Usi', $strona, $out1);
  16. if($out1)
  17. {
  18. $post_plugin['_wpnonce'] = urlencode($out1[1]); //dopasowanie dynamicznej wartosci wpnonce
  19. }
  20.  
  21.  
  22. $licznik = preg_match_all("@name='checked\[\]' value='(.*)' />@Usi", $strona, $out);
  23. if($out)
  24. {
  25. foreach($out[1] as $in=>$val)
  26. {
  27. $post_plugin['checked[]'] .= urlencode('checked[]='.$out[1][$in].'&'); //dopasowanie $post[name] = value
  28. }
  29. $post_plugin['checked[]'] = substr($post_plugin['checked[]'], 0, -1);
  30.  
  31. }
  32.  
  33. foreach ($post_plugin as $key => $value) echo $key .'='. $value . '<br>';
  34. curl_setopt($curl, CURLOPT_POST, 1);
  35. curl_setopt($curl, CURLOPT_POSTFIELDS, $post_plugin);
  36. curl_setopt($curl, CURLOPT_URL, $row['url']."wp-admin/update-core.php?action=do-plugin-upgrade");
  37. $strona = curl_exec($curl);
  38. }
  39.