![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 18.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
jak to zrobić, żeby po kliknięciu w link, przekazać do kolejnej strony dane POST uzyskane z formularza na stronie poprzedniej ? no bo za pomocą linku, można przekazywać jedynie dane GET ?
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Tablica POST się wtedy przesyła -.-
http://php.net/manual/en/reserved.variables.post.php http://porady.skryptoteka.pl/22,czym-sie-r...do-skryptu.html -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Wykorzystaj sesje.
Po zainicjowaniu sesji funkcją session_start() możesz zapisać w tablicy $_SESSION dane przekazane przez formularz. Na każdej kolejnej stronie (tam również musisz użyć funkcji session_start()) będziesz mógł te dane odbierać z tablicy $_SESSION. Możesz również te dane bez problemu usunąć. EDIT Funkcja session_strat() musi być umieszczona na początku każdego pliku PHP, który z sesji korzysta. Ten post edytował mortus 18.06.2011, 10:25:06 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 18.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
@mortus, wiem o sesjach. zastosuję to jeśli nie będzie się dało inaczej. póki co jeszcze drążę temat post. jeśli znajdę rozwiązanie, może być pożyteczne
@IceManSpy, ten link do 'skryptoteka' to nic mi tu nie daje. to jakiś ogólny opis post i get. to wszystko przecież wiem. ten link do php.net, też mi nic nie daje. to jakaś podstawowa definicja POST. chyba że coś zauważyłeś ciekawego w komentarzach ? jest ich trochę, póki co nie przeglądałem, tylko pytam Ciebie |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Tablicę post możesz przekazać dalej poprzez formularz z polami ukrytymi (hidden), ale wtedy wiąże się to z ponownym użyciem formularza. Alternatywnie możesz odpowiednio spreparować adres, aby przekazać dane w tablicy $_GET, co przy dużej liczbie danych z formularza nie będzie estetyczne, a i trzeba będzie dobrze zabezpieczyć skrypt.
Drugie rozwiązanie (mniej więcej) tak by wyglądało:
Najlepszym wyjściem są sesje. EDIT Innych możliwości nie ma. Jeśli formularz jest bardziej rozbudowany (np. umożliwia przesyłanie tablic), to trzeba zaprogramować funkcję do tworzenia $query_string. Ten post edytował mortus 18.06.2011, 10:42:11 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 18.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
ok, dzięki ale to też wiem, próbowałem takich rozwiązań. w moim przypadku mam dobre kilkaset elementów w tablicy. więc zależy mi na tym, żeby jednak zmusić przeglądarkę do wysłania danych POST po kliknięciu w link. z tego co wiem, zwykle przeglądarka wysyła dane POST jedynie po kliknięciu w przycisk submit formularza, który ma w nagłówku method=post . a może jest jakiś inny sposób ? do tego zmierzam.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Nie ma takiej możliwości.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 18.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
@mortus, jeśli możesz zobacz tutaj: http://www.webmasterworld.com/php/3164561.htm ostatni post. istnieje sposób wysłania danych POST do serwera i odpowiedź otrzymujesz do zmiennej. to jeszcze tylko, żeby odpowiedź serwera nie do zmiennej, tylko do przeglądarki jako nowa strona. może wiesz, jak ?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
@mortus, jeśli możesz zobacz tutaj: http://www.webmasterworld.com/php/3164561.htm ostatni post. istnieje sposób wysłania danych POST do serwera i odpowiedź otrzymujesz do zmiennej. to jeszcze tylko, żeby odpowiedź serwera nie do zmiennej, tylko do przeglądarki jako nowa strona. może wiesz, jak ? Nie da się. CURL-em (lub jakąś inną funkcją) trzeba by było tworzyć stronę HTML (bez kodu PHP) i przekierowywać do nowo utworzonego pliku, ale to nie ma prawa bytu, bo każde przesłanie formularza byłoby związane z utworzeniem na serwerze nowego pliku HTML. Te pliki trzeba by było na bieżąco usuwać. Załóżmy, że wykorzystamy tę funkcję do_post_request() z odnośnika, który wkleiłeś. Wyglądałoby to tak:
No i tę stronę tymczasową należałoby usunąć zaraz po jej opuszczeniu. Ale to rozwiązanie jest bez sensu - co z transferem na serwerze, z prawami do katalogów, z bezpieczeństwem. W tym właśnie sęk, że nie możesz najpierw wysłać tablicy $_POST CURL-em, AJAX-em, fopen, czy czymkolwiek innym do pliku PHP, a później przejść do tego pliku i liczyć na to, że dane w $_POST tam będą. Nie będzie ich. Możliwe, że Twój problem można rozwiązać inaczej, ale za mało wiemy o całym tym procesie przesyłania danych z formularza. Ten post edytował mortus 18.06.2011, 11:21:55 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 18.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
anyway, dzięki za Twój czas. może ktoś jeszcze przyjdzie na ten wątek.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Standardowo dane POST wysyła przeglądarka i robi to tylko, gdy klikniesz submit w odpowiednim formularzu. Bez względu na to jak napiszesz swoje skrypty, nie zmusisz przeglądarki do wysyłania POST kiedy tylko zechcesz (bo to ona decyduje kiedy ma na to ochotę).
Więc jeśli potrzebujesz wysłać na jakąś stronę dane POST, to... : 1) Serwer musi udawać przeglądarkę, otwiera jakąś stronę wysyłając dane POST (cURL) i później prześle wynik (np. to co sam odczytał ze strony) do przeglądarki użytkownika. W tym wypadku musisz jednak gdzieś zapamiętać dane POST, które otrzymałeś od użytkownika wcześniej (w pliku, w sesji, czy gdziekolwiek indziej)... 2) Modyfikujesz działanie przeglądarki użytkownika np. piszesz odpowiedni plugin (zapamiętujący dane POST i wysyłasz je do każdej nowootwieranej strony), albo piszesz własną przeglądarkę i zmuszasz użytkownika do używania jej. Nie ma innej możliwości! Jeśli jednak masz potrzebę na swoich stronach mieć po prostu dostęp do danych które przesłał Ci użytkownik, to użyj sesji (najłatwiejszy sposó ![]() Cytat @mortus, jeśli możesz zobacz tutaj: http://www.webmasterworld.com/php/3164561.htm ostatni post. istnieje sposób wysłania danych POST do serwera i odpowiedź otrzymujesz do zmiennej. to jeszcze tylko, żeby odpowiedź serwera nie do zmiennej, tylko do przeglądarki jako nowa strona. może wiesz, jak ? Jak odpowiedź masz w zmiennej to zrób echo $zmienna; I już wysłałeś do użytkownika. Bądź jednak świadomy tylko, że w tym linku co podałeś to nie użytkownik wysyła dane POST, tylko serwer na którym odpalony został skrypt. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
ok, dzięki ale to też wiem, próbowałem takich rozwiązań. w moim przypadku mam dobre kilkaset elementów w tablicy. więc zależy mi na tym, żeby jednak zmusić przeglądarkę do wysłania danych POST po kliknięciu w link. z tego co wiem, zwykle przeglądarka wysyła dane POST jedynie po kliknięciu w przycisk submit formularza, który ma w nagłówku method=post . a może jest jakiś inny sposób ? do tego zmierzam. javascript i do linku podłączenie akcji która będzie wysyłać ukryty formularz. Za każdym razem wiąże się to z ukrytym formularzem na każdej podstronie do której ma kierować link. Najlepiej to rozwiązać jak koledzy wyżej pisali - sesja i w niej umieścić dane. Skoro całe koszyki sklepów internetowych są w sesji przechowywane, niekiedy z dość pokaźnymi ilościami elementów, nic nie stoi na przeszkodzie, abyś i ty trzymał tam trochę elementów ![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 21 Dołączył: 10.06.2011 Skąd: Głogów Ostrzeżenie: (0%) ![]() ![]() |
Wykorzystaj sesje. Po zainicjowaniu sesji funkcją session_start() możesz zapisać w tablicy $_SESSION dane przekazane przez formularz. Na każdej kolejnej stronie (tam również musisz użyć funkcji session_start()) będziesz mógł te dane odbierać z tablicy $_SESSION. Możesz również te dane bez problemu usunąć. EDIT Funkcja session_strat() musi być umieszczona na początku każdego pliku PHP, który z sesji korzysta. jeżeli masz strone skryptowaną tzn tam masz include to session_start() użyj tylko na index.php co do tego linku, to nie trzeba żadnego javaskryptu jeżeli strona znajduje się na localhoscie jeżeli to np. index.php?id=1 to użyj GET if i wpis do bazy i możesz to w SESION trzymać, po co w post? Ten post edytował jackraymund 20.06.2011, 09:44:41 -------------------- Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 18.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
dziękuję wszystkim, ciekawe rady i pomysły, jest co czytać, i pomogło.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 08:37 |