Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cURL i przekierowanie
Forum PHP.pl > Forum > PHP
Largo
Witam,

Mam dane POST do przesłania na serwer. Są one dynamicznie generowane w zależności od użytkownika. Tablica danych to:

  1. $array = array( 'id' => 14710,
  2. 'amount' => 24.99,
  3. 'description' => 'Largo-W - 150FG',
  4. 'lang' => 'pl' );


Przepuszczam te dane przez pętlę, aby je przygotować do wysyłania. I tu pojawia się problem. Chciałbym, żeby cURL wysyłał dane POST, użytkownicy nie muszą widzieć tych danych, dlatego nie stosuję metody GET. cURL chciałbym, żeby wysyłał dane, a następnie był przekierowywany do domeny. Robię to tak:

  1. if( $sock = curl_init( 'https://ssl.dotpay.pl/' ) )
  2. {
  3. curl_setopt( $sock, CURLOPT_POST, true );
  4. curl_setopt( $sock, CURLOPT_POSTFIELDS, $url );
  5. curl_setopt( $sock, CURLOPT_FOLLOWLOCATION, true );
  6. curl_exec( $sock );
  7. curl_close( $sock );
  8. }


Dane pewnie są wysyłane, ale przekierowanie nie działa. CURLOPT_FOLLOWLOCATION nie działa u mnie na serwerze z powodu restrykcji open_basedir, ale czy wyłączając tą opcję, powinien przekierować z tymi danymi do docelowej strony?

Pozdrawiam,
Largo
vokiel
Było już o tym na forum. Musisz odczytać nagłówki odpowiedzi i wyłuskać z nich adres przekierowania. Przekierować samemu funkcją header('location: ');
Largo
Cytat(vokiel @ 17.11.2009, 13:39:40 ) *
Było już o tym na forum. Musisz odczytać nagłówki odpowiedzi i wyłuskać z nich adres przekierowania. Przekierować samemu funkcją header('location: ');


Witaj,

OK, ale ja znalazłem sposób dlaczego nie działa. Teraz za to działa nie do końca poprawnie. Dodanie CURL_VERIFYPEER na false, pomogło, ale nie do końca. On powinien przekierować, a tu się dziwnie dzieje, bo on otwiera WWW na tej stronie, pobiera jej treść, a nie o to mi chodzi. Oto kod:

  1. <?php
  2.  
  3. $array = array( 'id' => 14710,
  4. 'amount' => 24.99,
  5. 'description' => 'Largo-W - 150FG',
  6. 'lang' => 'pl' );
  7.  
  8. $url = '';
  9.  
  10. foreach( $array AS $k => $v )
  11. {
  12. $url .= urlencode( $k ).'='.urlencode( $v ).'&';
  13. }
  14.  
  15. $url = substr( $url, 0, strlen( $url ) - 1 );
  16.  
  17. if( $sock = curl_init() )
  18. {
  19. curl_setopt( $sock, CURLOPT_URL, 'https://ssl.dotpay.pl' );
  20. curl_setopt( $sock, CURLOPT_POST, 1 );
  21. curl_setopt( $sock, CURLOPT_POSTFIELDS, $url );
  22. curl_setopt( $sock, CURLOPT_SSL_VERIFYPEER, 0 );
  23. curl_setopt( $sock, CURL_HEADER, 1 );
  24. curl_exec( $sock );
  25. curl_close( $sock );
  26. }
  27.  
  28. ?>


Efekt - http://forum.diablotrade.pl/test.php
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.