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'; $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