PHP przekazuje zmienną do następnej strony

Wydaje się to dość proste, ale nie mogę znaleźć dobrego sposobu, aby to zrobić.

Powiedzmy na pierwszej stronie tworzę zmienną

$myVariable = "Some text";

I akcja formularza dla tej strony to " Page2.php". Więc w Page2.php, Jak mogę mieć dostęp do tej zmiennej? Wiem, że mogę to zrobić z sesjami, ale myślę, że to za dużo dla prostego ciągu, i muszę tylko przekazać prosty ciąg (nazwę pliku).

Jak mogę to osiągnąć?

Dzięki!
Author: Carlo, 2009-05-16

8 answers

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, jeśli 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 znacznie bezpieczniejsza niż pliki cookie. Bardziej bezpieczne, ale nie całkowicie bezpieczne.

Sesja:

//On page 1
$_SESSION['varname'] = $var_value;

//On page 2
$var_value = $_SESSION['varname'];

Pamiętaj, aby uruchomić session_start(); oświadczenie na obu tych stronach, zanim spróbujesz uzyskać dostęp do $_SESSION array, a także przed wysłaniem dowolnego wyjścia do przeglądarki.

Plik Cookie:

//One page 1
$_COOKIE['varname'] = $var_value;

//On page 2
$var_value = $_COOKIE['varname'];

Duża różnica między sesjami a Plikami cookie polega na tym, że wartość zmiennej będzie przechowywana na serwerze, jeśli używasz sesji, i na kliencie, jeśli używasz plików cookie. Nie mogę wymyślić żadnego dobrego powodu, aby używać plików cookie zamiast sesji, chyba że chcesz, aby dane były przechowywane między sesjami, ale nawet wtedy lepiej jest przechowywać je w DB i pobierać na podstawie nazwa użytkownika lub id.

GET and POST

Możesz dodać zmienną w linku do następnej strony:

<a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>

Spowoduje utworzenie zmiennej GET.

Innym sposobem jest umieszczenie ukrytego pola w formularzu, który wyświetla stronę drugą:

<form method="get" action="page2.php">
    <input type="hidden" name="varname" value="var_value">
    <input type="submit">
</form>

I na stronie drugiej:

//Using GET
$var_value = $_GET['varname'];

//Using POST
$var_value = $_POST['varname'];

//Using GET, POST or COOKIE.
$var_value = $_REQUEST['varname'];

Po prostu zmień metodę formularza na post, jeśli chcesz to zrobić przez pocztę. Oba są równie niebezpieczne, chociaż GET jest łatwiejsze do włamania.

Fakt, że każda nowa request jest, z wyjątkiem danych sesji, zupełnie nową instancją skryptu złapał mnie, gdy po raz pierwszy rozpoczął kodowanie w PHP. Gdy się do tego przyzwyczaisz, jest to dość proste.

 465
Author: Jrgns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 17:28:29

Dzięki za odpowiedzi powyżej. Oto jak to zrobiłem, mam nadzieję, że pomoże to tym, którzy podążają. Chcę przekazać numer rejestracyjny z jednej strony na drugą, stąd regName i regValue :

Utwórz swoją pierwszą stronę, nazwij ją set_reg.php :

<?php

session_start();

$_SESSION['regName'] = $regValue;

?>

<form method="get" action="get_reg.php">
    <input type="text" name="regName" value="">
    <input type="submit">
</form>

Utwórz swoją drugą stronę, nazwij ją get_reg.php :

<?php

session_start();

$regValue = $_GET['regName'];

echo "Your registration is: ".$regValue.".";

?>

<p><a href="set_reg.php">Back to set_reg.php</a>

Chociaż nie tak wyczerpująca jak powyższa odpowiedź, dla moich celów ilustruje to w prosty sposób związek pomiędzy różne elementy.

 30
Author: Frank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-23 12:59:36

Przekazywanie danych w żądaniu

Możesz albo osadzić go jako ukryte pole w formularzu, albo dodać adres URL akcji formularzy

 echo '<input type="hidden" name="myVariable" value="'.
     htmlentities($myVariable).'">';

Lub

echo '<form method="POST" action="Page2.php?myVariable='.
    urlencode($myVariable).'">";

Uwaga ilustruje to również użycie htmlentities i urlencode podczas przesyłania danych.

Przekazywanie danych w sesji

Jeśli dane nie muszą być przekazywane po stronie klienta, sesje mogą być bardziej odpowiednie. Po prostu wywołaj session_start () na początku każdego strony, i można pobrać i ustawić dane do tablicy $_SESSION.

Bezpieczeństwo

Ponieważ stwierdzasz, że twoja wartość jest w rzeczywistości nazwą pliku, musisz być świadomy konsekwencji bezpieczeństwa. Jeśli nazwa pliku pochodzi od strony klienta, Załóżmy, że użytkownik zmodyfikował wartość. Sprawdź ważność! Co się stanie, gdy użytkownik przekaże ścieżkę do ważnego pliku systemowego lub pliku znajdującego się pod jego kontrolą? Czy twój skrypt może być użyty do "sondowania" serwera w poszukiwaniu plików, które działają lub nie istnieć?

Jak widać dopiero zaczynasz, warto przypomnieć, że dotyczy to wszystkich danych, które pojawiają się w $_GET, $_POST lub $_COOKIE-Załóżmy, że twój najgorszy wróg stworzył zawartość tych tablic i odpowiednio koduje!

 17
Author: Paul Dixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-16 07:18:29

Istnieją trzy metody przekazywania wartości w php.

  • By post
  • By get
  • tworząc zmienną sesji

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

$a=$_POST['field-name'];

Jeśli wymagamy wartości zmiennej na więcej niż jednej stronie, możemy użyć zmiennej sesji jako: -

$a=$_SESSION['field-name];

Przed użyciem tej składni do tworzenia zmiennej sesji możemy najpierw trzeba dodać ten tag na samym początku naszej strony php

session_start(); 

Metody GET są zwykle używane do drukowania danych na tej samej stronie, która była używana do pobierania danych od użytkownika. Jego składnia jest następująca:

$a=$_GET['field-name'];

Metody POST są na ogół bezpieczniejsze niż GET, ponieważ gdy używamy metody Get, może ona wyświetlać dane na pasku adresu URL.Jeśli dane są bardziej wrażliwe dane, takie jak hasło, to może być inggeris.

 9
Author: ravi sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-06 12:30:39

Sesje byłyby jedynym dobrym sposobem, można również użyć GET / POST, ale byłoby to potencjalnie niebezpieczne.

 7
Author: Alo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-16 07:05:54

Wypróbuj ten kod

Używając ukrytego pola możemy przekazać php varibale do innej strony

Strona1.php

<?php $myVariable = "Some text";?>
<form method="post" action="page2.php">
 <input type="hidden" name="text" value="<?php echo $myVariable; ?>">
 <button type="submit">Submit</button>
</form>

Przekaż zmienną php do wartości ukrytego pola, aby uzyskać dostęp do tej zmiennej na innej stronie

Page2.php

<?php
 $text=$_POST['text'];
 echo $text;
?>
 7
Author: Bhargav Chudasama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 07:45:58
**page 1**
<form action="exapmple.php?variable_name=$value" method="POST"> 
    <button>
        <input  type="hidden" name="x">
    </button>
</form>`

Strona 2

if(isset($_POST['x'])) {
    $new_value=$_GET['variable_name'];
}
 1
Author: V Kash Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-05 13:03:34

Sesje byłyby jedynym dobrym sposobem, można również użyć GET / POST, ale byłoby to potencjalnie niebezpieczne.

Przekazywanie danych w sesji Jeśli dane nie muszą być przekazywane po stronie klienta, wtedy sesje mogą być bardziej odpowiednie. Po prostu wywołaj session_start () na początku każdej strony, a możesz pobrać i ustawić dane do tablicy $_SESSION.

Bezpieczeństwo Ponieważ stwierdzasz, że twoja wartość jest w rzeczywistości nazwą pliku, musisz być świadomy konsekwencji bezpieczeństwa. Jeśli nazwa pliku przybył od strony klienta, Załóżmy, że użytkownik majstrował przy wartości. Sprawdź ważność! Co się stanie, gdy użytkownik przekaże ścieżkę do ważnego pliku systemowego lub pliku znajdującego się pod jego kontrolą? Czy twój skrypt może być użyty do "sondowania" serwera pod kątem plików, które istnieją lub nie istnieją?

Jak widać dopiero zaczynasz, warto przypomnieć, że dotyczy to wszystkich danych, które docierają do $_GET, $_POST lub $_COOKIE-Załóżmy, że twój najgorszy wróg stworzył zawartość tych tablic, i odpowiednio kodować!

 1
Author: Kaushik Kothiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-14 13:53:49