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:
<?php
$url = 'https://username:pass@adres_do_phpmyadmin';
$cookiefile = dirname(__FILE__) . DIRECTORY_SEPARATOR
. 'test.txt'; $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_exec($ch);
$postFields['is_js_confirmed'] = '0';
$postFields['db'] = 'test';
$postFields['pos'] = '0';
$postFields['goto'] = 'db_sql.php';
$postFields['zero_rows'] = 'Zapytanie SQL zostało wykonane pomyślnie';
$postFields['prev_sql_query'] = '';
$postFields['sql_delimiter'] = ';';
$postFields['show_query'] = '1';
$postFields['SQL'] = 'Wykonaj';
$postFields['sql_query'] = 'select * from blogi';
/*
$postFields['db'] = 'test';
$postFields['charset_of_file'] = 'utf8';
$postFields['allow_interrupt'] = 'yes';
$postFields['skip_queries'] = '0';
$postFields['MAX_FILE_SIZE'] = '52428800';
$postFields['import_file'] = '@' .dirname(__FILE__). '/sql.sql';
$postFields['sql_no_auto_value_on_zero'] = 'something';
$postFields['sql_compatibility'] = 'NONE';
$postFields['import_type'] = 'database';
$postFields['format'] = 'sql';
*/
$t = 'import.php';
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_URL, $url . $t);
curl_close($ch);
?>
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