Witam.

Od kilku dni próbuję napisać skrypt, który będzie logował się do panelu phpmyadmin i następnie wgrywał tam plik ze zrzutem bazy danych. O ile logowanie udało mi się rozwiązać bez większych problemów o tyle z drugą częścią skryptu nie potrafię sobie poradzić. Gdy wykonuję ręcznie import pliku (podglądam sobie wszystkie przesyłane dane w Firebug) to jest ok jednak gdy takie same dane przesyłam za pomocą curl pojawia mi się błąd:

import.php: Missing parameter: import_type (FAQ 2.8)
import.php: Missing parameter: format (FAQ 2.8)

przewertowałem bardzo dużo stron na ten temat ale nic konkretnego nie znalazłem. Poniżej zamieszczam mój kod:

  1. <?php
  2. $url = 'https://username:pass@adres_do_phpmyadmin';
  3.  
  4. $cookiefile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'test.txt';
  5. $ch = curl_init();
  6. curl_setopt($ch, CURLOPT_URL, $url);
  7. //curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
  8. curl_setopt($ch, CURLOPT_HEADER, 0);
  9. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
  10. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
  11. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  13. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  14. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  15. curl_exec($ch);
  16.  
  17. $postFields['is_js_confirmed'] = '0';
  18. $postFields['db'] = 'test';
  19. $postFields['pos'] = '0';
  20. $postFields['goto'] = 'db_sql.php';
  21. $postFields['zero_rows'] = 'Zapytanie SQL zostało wykonane pomyślnie';
  22. $postFields['prev_sql_query'] = '';
  23. $postFields['sql_delimiter'] = ';';
  24. $postFields['show_query'] = '1';
  25. $postFields['SQL'] = 'Wykonaj';
  26. $postFields['sql_query'] = 'select * from blogi';
  27.  
  28. /*
  29. $postFields['db'] = 'test';
  30. $postFields['charset_of_file'] = 'utf8';
  31. $postFields['allow_interrupt'] = 'yes';
  32. $postFields['skip_queries'] = '0';
  33. $postFields['MAX_FILE_SIZE'] = '52428800';
  34. $postFields['import_file'] = '@' .dirname(__FILE__). '/sql.sql';
  35. $postFields['sql_no_auto_value_on_zero'] = 'something';
  36. $postFields['sql_compatibility'] = 'NONE';
  37. $postFields['import_type'] = 'database';
  38. $postFields['format'] = 'sql';
  39. */
  40.  
  41. $t = 'import.php';
  42.  
  43. curl_setopt($ch, CURLOPT_POST, 1);
  44. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
  45. curl_setopt($ch, CURLOPT_URL, $url . $t);
  46.  
  47. echo curl_exec($ch);
  48.  
  49. curl_close($ch);
  50. ?>


Próbowałem symulować import pliku z bazą danych oraz próbowałem symulować wykonanie pytania sql w panelu i obydwóch przypadkach otrzymuje ten sam komunikat. Dodam jeszcze że w PhpMyAdmin ustawiony host to "localhost" jednak chyba przy curlu nie powinno mieć to znaczenia?

Proszę o pomoc.

Pozdrawiam