![]() |
![]() |
![]()
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:
niestety firefox zamiast przejść na serwer próbuje zapisać plik :| co zrobić aby nastąpił normalny redirect... Pozdrawiam Cezar708 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Twoja metoda wysyła nagłówki z serwera do przeglądarki. A Ty musisz zrobić to w drugą stronę.
Szczerze mówiąc to wątpię, czy ze względów bezpieczeństwa przeglądarka pozwoli Ci na przekierowywanie danych POST. Ale próbuj - pewnie jakieś rozwiązanie jest. Nie mniej jednak Twoje jest z założenia błędne. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
sowiq wszystko wskazuje, że faktycznie masz rację... nie mniej nie wierzę, że nie ma możlwości przekierowania danych z POST na inną lokalizację.
Przecież skoro:
to dlaczego nie możnaby było tego robić również z POST? Musi być jakieś w miarę normalne rozwiązanie... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
można ale raczej nie header
![]() poczytaj np o cURL: http://wortal.php.pl/wortal/artykuly/php/b...http/formularze |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
to dlaczego nie możnaby było tego robić również z POST? Bo mówisz przeglądarce: przejdź teraz na adres domena.com/?dane_get. I tak na prawdę dla przeglądarki te dane GET to nic innego jak część adresu. Dane POST znajdują się w nagłówkach wysyłanych przez przeglądarkę. A czy możesz zmusić przeglądarkę do ich wysłania? Nie wiem. Raczej nie, bo byłaby to poważna luka w bezpieczeństwie. Jeśli już, to nie PHP, tylko coś co działa po stronie przeglądarki. Czytaj: JavaScript/AJAX. Ajaxem można przecież wysyłać dane POST. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Spawnm niestety cURL nie załatwi mojego problemu, ponieważ co najwyżej jestem w stanie wysłać request do "innyserwer/odbierz.php" i obsłużyć mi go w "localhost/home.php", więc nie ma tutaj żadnego przekierowania. Nie będę na "innyserwer/odbierz.php" tylko nadal w "localhost/home.php".
sowiq tak samo Twoje rozwiązanie nie załatwia mojego problemu... bo mam podwójny request od przeglądarki co jak wiadomo nie sprzyja ogólnie pojętemu "User Experience", więc trochę to może pomulić. No cóż niestety chyba nie da się z tym nic ciekawego zrobić, szukałem na innych forach i trafiłem na post Is it possible to send POST vars through a header redirect?, co chyba ukręca łeb sprawie. No nic, czeka mnie więc gimnastyka artystyczna z udziałem PHP aby ten problem ominąć. pozdrawiam Cezar708 [EDIT] no chyba, że macie jeszcze jakieś pomysły... |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pytanie tylko - po co?
![]() 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: 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 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. Proste jak barszcz ![]() Ten post edytował sowiq 24.03.2009, 10:52:54 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
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: 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 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. Proste jak barszcz ![]() ... 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 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
ź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 Wiesz, nie napisałeś tego wcześniej.Nic nie stoi na przeszkodzie, żebyś na podstawie danych wysłanych na Twój serwer przez Ajaxa zbudował formularz (w HTML), wrzucił go do drzewa DOM stronki i zasubmitował JS'em po stronie użytkownika. Moim zdaniem jest to całkiem dobre rozwiązanie. Ale jak uważasz, tak zrobisz. Pozdrawiam. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
A jaki problem wygenerować unikalny identyfikator, wrzucić formularz w sesję i przekazać via GET ten identyfikator? Dane będą, zadziała przez JS.
![]() -------------------- ![]() 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! |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 592 Pomógł: 62 Dołączył: 3.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
a czemu uparłeś się że nie można przekazać dane przez GETa?
możesz zserializowac dane i wrzucic w GETa, nastapnie na inny serwer, który odbierze te dane i szybko z długiego adresu przeniesie przez [301] na ładny adres ![]() PS. z sesjami mi się to nie widzi -------------------- :]
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat PS. z sesjami mi się to nie widzi Niby czemu? ![]() GET ma ograniczenie do 1024 znaków... -------------------- ![]() 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! |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a czemu uparłeś się że nie można przekazać dane przez GETa? Z tego co ja zrozumiałem, to ma to działać następująco:1. wysyłamy jakieś zapytanie do naszego serwera (GET/POST/whatever) 2. nasz serwer parsuje to zapytanie i wysyła odpowiedź 3. po odebraniu odpowiedzi przeglądarka wysyła POST'em otrzymane przed chwilą jakieś dane na całkiem inną stronę Jak dla mnie jedynym wyjściem jest zasubmitowanie przez JS kjakiegoś ukrytego formularza, bo nie da się tak przekierować przeglądarki, żeby automatycznie wysłała żądanie POST. M.in. ze względów bezpieczeństwa. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:47 |