Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] redirect z danymi POST
Cezar708
post 24.03.2009, 09:35:41
Post #1





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Cześć,

mam skrypt pod lokalizacją: http://localhost/home.php w pliku home.php zrobić redirect na localizację http://innyserwer/odbierz.php ale jednocześnie dane muszą być przesłane POSTem.

próbowałem następującej metody:

  1. <?php
  2. function redirectByPOSTMethod($url, $datas) {
  3.    preg_match('///(w+)(/.+)/', $url, $m);
  4.    $host = $m[1];
  5.    $path = $m[2];
  6.    $data = urlencode(http_build_query($datas));
  7.    header("POST $path HTTP/1.1r\n");
  8.    header("Host: $hostr\n" );
  9.    header("Content-type: application/x-www-form-urlencodedr\n");
  10.    header("Content-length: " . strlen($data) . "r\n");
  11.    header("Connection: closer\nr\n");
  12.    header($data);
  13.  }
  14.  
  15. redirectByPOSTMethod('http://innyserwer/odbierz.php', array('asdf'=>'1234', 'asdf1234'=>'asf'));
  16. ?>


niestety firefox zamiast przejść na serwer próbuje zapisać plik :|

co zrobić aby nastąpił normalny redirect...

Pozdrawiam
Cezar708
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post 24.03.2009, 12:57:41
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Cytat(sowiq @ 24.03.2009, 10:50:39 ) *
Załóżmy, że chcesz zobaczyć jakie dane user wysyła POST'em i gdzieś je zapisać. Ja bym zrobił to zupełnie inaczej niż Ty zakładasz:


źle zakładasz, nie chcę oglądać jakie dane przesyłane postem, a sam chcę zbudować requesta postem, i to nie na podstawie danych otrzymanych od użytkownika, więc poniższa rada:
Cytat(sowiq @ 24.03.2009, 10:50:39 ) *
1. Mam formularz z action ustawionym na localhost i target'em na ramkę (oczywiście w dokumencie mam ukrytą ramkę iframe, 1x1px).
2. Klikam submit formularza - w mojej ramce ładuje się localhost - odczytuję sobie na serwerze wysłane dane
3. Po odczytaniu potrzebnych danych odbieram w ramce wygenerowany na serwerze kod JS
4. Kod JS w nadrzędnej ramce znajduje formularz (np. po ID), zmienia mu action na google.pl i wywołuje na nim metodę submit().
5. Tym sposobem masz dane POST wysłane na swój serwer, a user jest na stronie google.pl

... traci na wartości

Cytat(sowiq @ 24.03.2009, 10:50:39 ) *
Ew. można to zrobić bardziej elegancko - wysyłać dane na Twój serwer za pomocą Ajax. Ale w obu przypadkach user musi mieć obsługę JS. No ale nie oszukujmy się - 99% użytkowników ją ma.

Nawet jakbyśmy się zrozumieli to musisz wiedzieć, że takie eleganckie nigdy nie zadziała. Wcześniej mówiłeś o bezpieczeństwie to musisz wiedzieć, że pomiędzy dwoma różnymi domenami nie wywołasz "ajaxowego" requesta. Dlaczego? Myślę, że szybko sam sobie odpowiesz.

Cytat(sowiq @ 24.03.2009, 10:50:39 ) *
Proste jak barszcz winksmiley.jpg

... niekoniecznie... to jest niestety niewykonalne.

Jedyne co mógłbym zrobić to ukryty formularz po stronie widoku, ale do niego nie mam dostępu (stąd inna domena... nie moja). Użytkownicy tej - nie-mojej domeny wysyłaja do mnie normalnie GETem dane. Ja określam wszelkie potrzebne mi dane, na tej podstawie tworzę dane, które muszę wysłać jeszcze do innego serwera...

... więc niestety pozostała mi jedyna opcja, utworzenia formularza i jego automatyczny submit, podobna do tej co sam napisałeś w jednym z wcześniejszych postów. Niestety nic innego lepszego nie byłem w stanie wymyśleć.

Pozdrawiam
Cezar708
Go to the top of the page
+Quote Post

Posty w temacie


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 - 19:01