Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formuarz z zewnętrznego serwisu i cURL
Forum PHP.pl > Forum > PHP
peter222
Mam taki problem:

Jest sobie strona A (intranetowy serwis firmy). Na stronie tej jest przygotowany przeze mnie formularz. Chcę go wyświetlić na stronie www B (inna domena). Robię to cURL'em tak:

  1. $url = 'http://ip_serwisu/form';
  2.  
  3. $ch = curl_init();
  4. curl_setopt($ch, CURLOPT_HEADER, 0);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch, CURLOPT_URL, $url);
  7. curl_setopt( $ch, CURLOPT_POST, true );
  8.  
  9. $data = curl_exec($ch);
  10. curl_close($ch);
  11.  
  12. echo $data;


Otrzymuję formularz, ale jak zrobię submit to przekierowuje mnie na zewnętrzny intranetowy serwis, dopiero tam widzę wynik walidacji formularza.
Czy da się zrobić tak, żeby wszystko odbywało się na stronie A? Czyli po submicie pozostaję na stronie A, widzę wynik walidacji, po poprawnym submicie widzę stronę "dziękujemy na zgłoszenie".

Czyli dokładnie tak, jakbym zrobił to w ramce (nie chcę jednak jej tutaj używać). Chodzi o to, aby za pomocą intranetowego formularza zapisywać bezpośrednio zgłoszenia do bazy z zewnętrznej strony www.
pitu
Odwołaj się bezpośrednio do pliku obsługującego formularz i prześlij po przez curl wymagane dane via POST/GET.
peter222
Ten adres http://ip_serwisu/form odwołuje się bezpośrednio do pliku (kontroler codeignitera).
Dane są przesyłane przez POST. Wszystko działa na adresie http://ip_serwisu/form, chodzi o to aby maskując ten adres wywołać ten skrypt z identycznym działaniem na innej domenie (wszystkie 3 kroki: 1. submit formularza, 2. ewentualna walidacja - wyrzucenie błędów, 3. podziękowanie jesli sukces.)

W formularzu jako action powinien być jaki adres podany? A może action zostawić puste?
CuteOne
Adres w formularzu powinien wskazywać na akcję, która przeprowadza walidację formularza. Ten sam adres powinien znaleźć się w curlu - jeżeli action formularza jest pusty to adres url wygląda tak http://ip_serwisu/form
peter222
Cytat(CuteOne @ 12.11.2012, 09:07:50 ) *
Adres w formularzu powinien wskazywać na akcję, która przeprowadza walidację formularza. Ten sam adres powinien znaleźć się w curlu - jeżeli action formularza jest pusty to adres url wygląda tak http://ip_serwisu/form


No i własnie tak mam. W action jest 'http://ip_serwisu/form' bo ten sam adres obsługuje walidację, ten sam wyświetla stronę "dziękujemy" w zależności od powodzenia walidacji lub nie. Problem w tym, że jeśli w action jest ten adres, to po submicie jestem tam przekierowywany co nie jest pożądanym efektem bo tak jak opisałem chciałbym aby wszystkie akcje wykonały się na serwerze pod domeną A. Dokładnie tak jakby działo się to w ramce. Dlatego pytałem o pole action, czy aby nie musi być tam adres domeny A lub pusty (dzięki czemu byłby zależny od domeny z której został wywołany, jednak cURL musiałby pozwolić na wykonanie wszystkich operacji w obrębie domeny A a to jest moje pytanie, jak to zrobić)
CuteOne
Już rozumiem o co ci chodzi ;P w Twoim wypadku najlepszym rozwiązaniem będzie:
- napisanie identycznego formularza (tylko HTML bez walidacji itp.), do action wstawiasz adres np. http://domenaA.pl/curlsend.php - dane z tego formularza wysyłasz za pomocą curla do właściwego formularza http://ip_serwisu/form
- iframe
peter222
iFrame odpada dlatego chciałem wszystko cURL'em... tak myślałem, żeby po stronie serwera A zrobić drugi formularz, choć liczyłem że cURL pozwoli w jakiejś konfiguracji na pełną automatyzację sad.gif leń ze mnie ale cóż, jeśli się nie da... działam smile.gif
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.