Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zachowanie danych POST przy przekierowaniu
-lukasamd-
post
Post #1





Goście







Witam,
chciałbym zrobić tak, że strona obrabiająca formularz automatycznie przekierowuje przez header użytkownika na inny plik, ale zachowuje przekazywanie danych metodą POST.
Jak mogę zachować elementy POSTa podczas takiego przekierowania?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


  1. foreach($_POST as $k => $v) {
  2. $_SESSION[$k] = $v;
  3. }


window.location.href = 'inny_skrypt.php';
smile.gif
nie zauważyłem dwóch wyrazów: "przez header";
  1. header('Location: inna_strona.php');

albo przekierowanie na get:
  1. $add = "";
  2. foreach($_POST as $k => $v) {
  3. $add.=$k.'='.$v.'&';
  4. }
  5. header('Location: inna_strona.php?'.$add);


~lukasamd zależy gdzie przekierowuje ?
~altruista2 - zobaczymy smile.gif

Ten post edytował darko 17.02.2010, 19:30:39


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
altruista2
post
Post #3





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


@darko: przypuszczam, że on chyba spamować jakaś inną stronę więc twoje rozwiązanie się nie sprawdzi biggrin.gif

Edyta:
@darko:
nie zapominaj o tym:
  1. $add.=urlencode($k).'='.urlencode($v).'&';


bo ktoś wyśle "&" i wszystko szlag trafia biggrin.gif

Ten post edytował altruista2 17.02.2010, 19:38:19


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~altruista2 - niekoniecznie - być może chce przejść do innego kroku w pseudokreatorze.

Cytat
albo przekierowanie na get:

Dlaczego tyle osób zapomina, że istnieje coś takiego, jak http_build_query?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
darko
post
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat(erix @ 17.02.2010, 19:35:05 ) *
~altruista2 - niekoniecznie - być może chce przejść do innego kroku w pseudokreatorze.


Dlaczego tyle osób zapomina, że istnieje coś takiego, jak http_build_query?

Przepraszam smile.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #6





Goście







@darko:
Wolałbym tego nie trzymać ani w GET, ani w sesjach. Nie można spowodować czegoś a'la wysłanie formularza w PHP, aby mieć te POSTy nadal dostępne?

@altruista2:
Nie, nie zamierzam spamować smile.gif

@erix:
Tak nawiasem, dzięki za info o http_build_query - funkcji nie znałem, a na pewno niejednokrotnie się przyda smile.gif
Go to the top of the page
+Quote Post
altruista2
post
Post #7





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


via http://www.hotscripts.com/forums/php/37750...-post-data.html
  1. <?php
  2.  
  3. /**
  4.  * @author
  5.  * @copyright 2007
  6.  */
  7.  
  8. class curl
  9. {
  10. var $channel ;
  11.  
  12. function curl( )
  13. {
  14. $this->channel = curl_init( );
  15. // you might want the headers for http codes
  16. curl_setopt( $this->channel, CURLOPT_HEADER, true );
  17. // you may need to set the http useragent for curl to operate as
  18. curl_setopt( $this->channel, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  19. // you wanna follow stuff like meta and location headers
  20. curl_setopt( $this->channel, CURLOPT_FOLLOWLOCATION, true );
  21. // you want all the data back to test it for errors
  22. curl_setopt( $this->channel, CURLOPT_RETURNTRANSFER, true );
  23. // probably unecessary, but cookies may be needed to
  24. curl_setopt( $this->channel, CURLOPT_COOKIEJAR, 'cookie.txt');
  25. // as above
  26. curl_setopt( $this->channel, CURLOPT_COOKIEFILE, 'cookie.txt');
  27. }
  28. function makeRequest( $method, $url, $vars )
  29. {
  30. // if the $vars are in an array then turn them into a usable string
  31. if( is_array( $vars ) ):
  32. $vars = implode( '&', $vars );
  33. endif;
  34.  
  35. // setup the url to post / get from / to
  36. curl_setopt( $this->channel, CURLOPT_URL, $url );
  37. // the actual post bit
  38. if ( strtolower( $method ) == 'post' ) :
  39. curl_setopt( $this->channel, CURLOPT_POST, true );
  40. curl_setopt( $this->channel, CURLOPT_POSTFIELDS, $vars );
  41. endif;
  42. // return data
  43. return curl_exec( $this->channel );
  44. }
  45. }
  46.  
  47. $curl = new curl( );
  48. // you should not execute both of these, but either way works
  49. echo $curl->makeRequest( 'post', 'http://yourdomain.com/path/to/php.php', 'message=my message goes here' );
  50. echo $curl->makeRequest( 'post', 'http://yourdomain.com/path/to/php.php', array('message=my message goes here', 'type=text') );
  51. ?>


wymaga cURL

Ten post edytował altruista2 17.02.2010, 19:59:26


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #8





Goście







Niestety, tam gdzie chcę to zrobić, curl nie jest dostępny...
Go to the top of the page
+Quote Post
altruista2
post
Post #9





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Spróbuj tego (via manual php) :
  1. $host = "www.example.com";
  2. $path = "/path/to/script.php";
  3. $data = "data1=value1&data2=value2";
  4. $data = urlencode($data);
  5.  
  6. header("POST $path HTTP/1.1\r\n" );
  7. header("Host: $host\r\n" );
  8. header("Content-type: application/x-www-form-urlencoded\r\n" );
  9. header("Content-length: " . strlen($data) . "\r\n" );
  10. header("Connection: close\r\n\r\n" );
  11. header($data);


Próbowałem tego wcześniej, ale to na niektórych serwerach działa, a na niektórych nie. (dlatego najpierw Ci dałem skrypt z cURLa) Szczerze mówiąc nie znam przyczyny smile.gifsmile.gif

Jak to Ci nie zadziała to ostatnie rozwiązanie to wysyłać POST przez javascript sad.gif

Ten post edytował altruista2 17.02.2010, 20:06:17


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #10





Goście







Powiedzmy tak - chcę odebrać z formularza w POST pewne dane, dodać do nich nieco a nieco zmodyfikować, a następnie wszystko przesłać do dotpay.
Chciałbym to zrobić tak, aby użytkownik nie musiał robić żadnego potwierdzenia, a zarazem aby był do dotpay przekierowywany (czyli curl wykonujący posta "w tle" i tak by odpadał).
Go to the top of the page
+Quote Post
altruista2
post
Post #11





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


No to możesz np. zrobić stronę przejściową (wyświetlenie napisu "za chwile będziesz przekierowany na dotpay") z javascriptem który wysyła dane POST).

Pewne rozwiązanie i w miarę eleganckie smile.gif)


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
dodać do nich nieco a nieco zmodyfikować, a następnie wszystko przesłać do dotpay.

Oczadziałeś?!

Temat zamykam.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 17:19