Wydaje się to dość proste, ale nie mogę znaleźć dobrego sposobu na zrobienie tego.
Powiedz na pierwszej stronie, że tworzę zmienną
$myVariable = "Some text";
A akcja formularza dla tej strony to „Page2.php”. Więc w Page2.php, jak mogę uzyskać dostęp do tej zmiennej? Wiem, że mogę to zrobić za pomocą sesji, ale myślę, że to za dużo jak na zwykły ciąg i muszę jedynie przekazać prosty ciąg (nazwę pliku).
Jak mogę to osiągnąć?
Dzięki!
Odpowiedzi:
HTML / HTTP jest bezstanowy, innymi słowy to, co zrobiłeś / widziałeś na poprzedniej stronie, jest całkowicie niezwiązane z bieżącą stroną. Z wyjątkiem sytuacji, gdy używasz czegoś takiego jak sesje, pliki cookie lub zmienne GET / POST. Sesje i pliki cookie są dość łatwe w użyciu, a sesja jest zdecydowanie bezpieczniejsza niż pliki cookie. Bardziej bezpieczne, ale nie do końca bezpieczne.
Sesja:
Pamiętaj, aby uruchomić
session_start();
instrukcję na obu tych stronach przed próbą uzyskania dostępu do$_SESSION
tablicy, a także przed wysłaniem danych wyjściowych do przeglądarki.Ciastko:
Duża różnica między sesjami a plikami cookie polega na tym, że wartość zmiennej będzie przechowywana na serwerze, jeśli korzystasz z sesji, a na kliencie, jeśli używasz plików cookie. Nie mogę wymyślić żadnego dobrego powodu, aby używać plików cookie zamiast sesji, z wyjątkiem sytuacji, gdy chcesz zachować dane między sesjami, ale nawet wtedy lepiej być może przechowywać je w bazie danych i pobierać na podstawie nazwy użytkownika lub identyfikatora.
POBIERZ i POST
Możesz dodać zmienną w linku do następnej strony:
Spowoduje to utworzenie zmiennej GET.
Innym sposobem jest dołączenie ukrytego pola do formularza, który przesyła się na stronę drugą:
A następnie na stronie drugiej:
Po prostu zmień metodę formularza na,
post
jeśli chcesz to zrobić pocztą. Oba są równie niepewne, chociaż łatwiej jest włamać się do GET.Fakt, że każde nowe żądanie, z wyjątkiem danych sesji, jest zupełnie nową instancją skryptu, przyłapał mnie, gdy zaczynałem kodować w PHP. Kiedy już się przyzwyczaisz, jest to dość proste.
źródło
Dzięki za odpowiedzi powyżej. Oto jak to zrobiłem, mam nadzieję, że pomoże tym, którzy podążają. Chcę przekazać numer rejestracyjny z jednej strony na drugą, stąd regName i regValue :
Utwórz pierwszą stronę, nazwij ją set_reg.php :
Utwórz drugą stronę, nazwij ją get_reg.php :
Chociaż nie jest tak wyczerpująca jak powyższa odpowiedź, dla moich celów ilustruje to w prosty sposób związek między poszczególnymi elementami.
źródło
Przekazywanie danych we wniosku
Możesz albo osadzić go jako ukryte pole w formularzu, albo dodać adres URL akcji formularza
lub
Zauważ, że ilustruje to również użycie htmlentities i urlencode podczas przekazywania danych.
Przekazywanie danych w sesji
Jeśli dane nie muszą być przekazywane po stronie klienta, sesje mogą być bardziej odpowiednie. Wystarczy wywołać session_start () na początku każdej strony, aby uzyskać i ustawić dane w tablicy $ _SESSION.
Bezpieczeństwo
Ponieważ twierdzisz, że twoja wartość jest w rzeczywistości nazwą pliku, musisz zdawać sobie sprawę z konsekwencji bezpieczeństwa. Jeśli nazwa pliku dotarła ze strony klienta, załóżmy, że użytkownik sfałszował wartość. Sprawdź, czy jest ważna! Co się stanie, gdy użytkownik przekaże ścieżkę do ważnego pliku systemowego lub pliku pod ich kontrolą? Czy można użyć skryptu do „sondowania” serwera w poszukiwaniu plików, które nie istnieją lub istnieją?
Ponieważ wyraźnie dopiero zaczynasz, warto przypomnieć, że dotyczy to wszystkich danych, które docierają do $ _GET, $ _POST lub $ _COOKIE - zakładając, że twój najgorszy wróg spreparował zawartość tych tablic i odpowiednio kod!
źródło
Istnieją trzy metody przekazywania wartości w php.
Te trzy metody są używane do różnych celów. Na przykład, jeśli chcemy otrzymać naszą wartość na następnej stronie, możemy użyć metody „post” ($ _POST) jako: -
Jeśli wymagamy wartości zmiennej na więcej niż jednej stronie, możemy użyć zmiennej sesji jako:
Przed użyciem tej składni do tworzenia zmiennej SESSION musimy najpierw dodać ten tag na samym początku naszej strony php
Metoda GET jest zwykle używana do drukowania danych na tej samej stronie, na której użytkownik pobierał dane od użytkownika. Jego składnia jest następująca:
Metoda POST jest na ogół bardziej bezpieczna niż GET, ponieważ gdy używamy metody Get, może ona wyświetlać dane w pasku adresu URL. Jeśli dane są bardziej wrażliwe, takie jak hasło, może to być inggeris.
źródło
Sesje byłyby jedynym dobrym sposobem, możesz także użyć GET / POST, ale byłoby to potencjalnie niepewne.
źródło
wypróbuj ten kod
za pomocą ukrytego pola możemy przenieść php varibale na inną stronę
page1.php
przekazać zmienną php do wartości ukrytego pola, aby uzyskać dostęp do tej zmiennej na innej stronie
page2.php
źródło
Strona 2
źródło
Sesje byłyby jedynym dobrym sposobem, możesz także użyć GET / POST, ale byłoby to potencjalnie niepewne.
Przekazywanie danych w sesji Jeśli dane nie muszą być przekazywane po stronie klienta, sesje mogą być bardziej odpowiednie. Wystarczy wywołać session_start () na początku każdej strony, aby uzyskać i ustawić dane w tablicy $ _SESSION.
Bezpieczeństwo Ponieważ twierdzisz, że twoja wartość jest w rzeczywistości nazwą pliku, musisz zdawać sobie sprawę z konsekwencji bezpieczeństwa. Jeśli nazwa pliku dotarła ze strony klienta, załóż, że użytkownik sfałszował wartość. Sprawdź, czy jest ważna! Co się stanie, gdy użytkownik przekaże ścieżkę do ważnego pliku systemowego lub pliku pod ich kontrolą? Czy można użyć skryptu do „sondowania” serwera w poszukiwaniu plików, które nie istnieją lub istnieją?
Ponieważ najwyraźniej dopiero zaczynasz, warto przypomnieć, że dotyczy to wszystkich danych, które docierają do $ _GET, $ _POST lub $ _COOKIE - zakładając, że twój najgorszy wróg spreparował zawartość tych tablic i odpowiednio kod!
źródło