Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+cURL] Wysyłanie danych metodą post
Forum PHP.pl > Forum > Przedszkole
witek23
Witam,

Mam problem z pewnym skryptem, ma on z zastosowaniem bibliteki cURL wysyłać dane do formularza html. To jest strona(zamow.html), na którą mają być wysyłane dane:
  1. <form action="dwa.php" method="POST">
  2. Imię: <input type=text name="imie"/><br/>
  3. Nazwisko: <input type=text name="nazwisko"/><br/>
  4. Proszę o fakturę do zamówienia: <input type=checkbox name="faktura"/><br/>
  5. Chcę zamówić:<br/>
  6. <input type=radio name=zamow value="kola"/>Coca-colę<br>
  7. <input type=radio name=zamow value="fanta"/>Fantę<br>
  8. <input type=radio name=zamow value="sprite"/>Sprite'a<br>
  9. <input type=submit name=press value="Wyślij"/>
  10. </form>

To jest skrypt php:
  1. <?php
  2. $postFields['imie'] = 'tekst1';
  3. $postFields['nazwisko'] = 'exampl';
  4. $postFields['faktura'] = 'on';
  5. $postFields['zamow'] = 'kola';
  6. $postFields['press'] = 'Wyślij';
  7. $ch = curl_init('http://127.0.0.1/dawid/zamow.html');
  8. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); //wypelnia pola
  9. curl_exec($ch);
  10. curl_close($ch);
  11. ?>


Co zrobiłem źle, bo formularz się nie wypełnia?
nospor
a nie zjadles bodajze
curl_setopt($ch, CURLOPT_POST, 1);
?
Savage.Mephisto
Dopisz i powinno śmigać:

  1. <?php
  2. curl_setopt($ch, CURLOPT_POST, 1);
  3. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  5. ?>
witek23
Zrobiłem tak jak mi sugerowaliście:
  1. <?php
  2. $postFields['imie'] = 'tekst1';
  3. $postFields['nazwisko'] = 'exampl';
  4. $postFields['faktura'] = 'on';
  5. $postFields['zamow'] = 'kola';
  6. $postFields['press'] = 'Wyślij';
  7. $ch = curl_init('http://127.0.0.1/dawid/zamow.html');
  8. curl_setopt($ch, CURLOPT_POST, 1);
  9. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); //wypelnia pola
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  11. curl_exec($ch);
  12. curl_close($ch);
  13. ?>


Jednak skrypt nadal nie działa, ponieważ po tym jak pola formularza zostaną wypełnione przez cURL przeglądarka powinna przekierować mnie do skryptu dwa.php, który pokazuje mi wartości zmiennych, a tak się nie dzieje.
wookieb
http://php.net/curl_setopt i opcja CURLOPT_FOLLOWLOCATION
witek23
Opcja CURLOPT_FOLLOWLOCATION niestety nie pomogła, nadal wyświetla się pusta strona. Jak wpisuję dane to wszystko jest ok, zmienne się wyświetlają.
wookieb
dodaj echo przed curl_exec
Albo najlepiej wywal opcje, RETURN_TRANSFER
witek23
Po dodaniu echo pokazuje się niewypełniony formularz, tak jakbym otworzył zamow.html. Tak wygląda mój skrypt po modyfikacjach:
  1. <?php
  2. $postFields['imie'] = 'tekst1';
  3. $postFields['nazwisko'] = 'exampl';
  4. $postFields['faktura'] = 'on';
  5. $postFields['zamow'] = 'kola';
  6. $postFields['press'] = 'Wyślij';
  7. $ch = curl_init('http://127.0.0.1/dawid/jeden.html');
  8. curl_setopt($ch, CURLOPT_POST, 1);
  9. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); //wypelnia pola
  10. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  12. echo curl_exec($ch);
  13. curl_close($ch);
  14. ?>


Zauważyłem, że jeśli za pomocą cURL wyślę zmienne bezpośrednio do skryptu, który ma za zadanie pokazać ich wartości to wszystko jest ok. Niestety nie działa opcja cURL -> Formularz -> skrypt pokazujący wartości zmiennych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.