Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> cURL i przekierowanie
Largo
post 17.11.2009, 13:18:46
Post #1





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
vokiel
post 17.11.2009, 13:39:40
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Było już o tym na forum. Musisz odczytać nagłówki odpowiedzi i wyłuskać z nich adres przekierowania. Przekierować samemu funkcją header('location: ');


--------------------
Go to the top of the page
+Quote Post
Largo
post 17.11.2009, 14:06:55
Post #3





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:36