2013-04-23 13 views
7

Mam utworzony formularz rejestracyjny, który pomyślnie przekazuje swoje zmienne ze strony rejestracji (go-gold.php) do strony podsumowania/weryfikacji (go-gold-summary.php). Dane wyświetlają się poprawnie na drugiej stronie.Wysyłanie zmiennych PHP tam iz powrotem między stronami

Jednak chcę użyć przycisku obrazu, aby powrócić do strony rejestracji, na wypadek gdyby użytkownik popełnił błąd. Wracając, oryginalny formularz powinien zostać wypełniony danymi, które zostały wprowadzone po raz pierwszy.

Problem polega na tym, że nie mogę ponownie wysłać/zwrócić danych z drugiej strony, z powrotem do pierwszej. Moje pola tekstowe są puste. NIE chcę używać zmiennych sesji.

Kod jest obcinany z całej strony.

Rejestracja Page (go-gold.php):

<?php 
$customer_name = $_POST['customer_name']; 
?> 

<form action="go-gold-summary.php" method="post"> 

Name: <input type="text" name="customer_name" id="customer_name" value= "<?php echo $customer_name ?>" /> 
<input name="<?php echo $customer_name ?>" type="hidden" id="<?php echo $customer_name ?>"> 

</form> 

Podsumowanie Page (go-złoto-summary.php)

<?php 
$customer_name = $_POST['customer_name']; 
?> 

<form action="go-gold.php" method="post"> 

Name: <?php echo $customer_name ?> <input type="hidden" id="<?php echo $customer_name ?>" name="<?php echo $customer_name ?>"> 

<INPUT TYPE="image" src="images/arrow_back.png" id="arrow" alt="Back to Registration"> (Button to go back to Registration Page) 

</form> 

Dzięki!

+3

Czy mogę zapytać, dlaczego '$ _SESSION' jest poza zasięgiem? – svidgen

Odpowiedz

2

go-gold-summary.php należy zmienić w ten sposób.

<?php 
$customer_name = $_POST['customer_name']; 
?> 

<form action="go-gold.php" method="post"> 

Name: <?php echo $customer_name ?> <input type="hidden" value="<?php echo $customer_name ?>" name="customer_name"> 

<INPUT TYPE="submit" src="images/arrow_back.png" id="arrow" alt="Back to Registration"> (Button to go back to Registration Page) 

</form> 

zawiadomienie jak zmieniłem tę linię

<input type="hidden" id="<?php echo $customer_name ?>" name="<?php echo $customer_name ?>"> 

w tym

<input type="hidden" value="<?php echo $customer_name ?>" name="customer_name"> 

$ _POST jest tablicą asocjacyjną i jak złożyć formularz zostanie ona wypełniona tak:

$_POST["index"] = value; 

gdzie "index" to pole tekstowe "nazwa" i value jest wartością pola tekstowego.

Tęskniłeś za tym w swoim kodzie. Po prostu zaktualizuj go moim kodem i zadziała

+0

Genialny, który działał idealnie, dzięki! –

+0

jeśli masz podobne problemy w przyszłości, spróbuj napisać var_dump ($ _ POST); u góry dokumentu php, a zobaczysz, dlaczego i gdzie robisz coś niewłaściwego. – Saturnix

0

Istnieje bardzo niewiele sposobów na zachowanie zmiennych na różnych stronach. Alternatywą jest posiadanie oddzielnego formularza na drugiej stronie z ukrytymi polami tekstowymi zawierającymi dane $ _POST, a przycisk wysyłania wywołuje poprzednią stronę. Nie można jednak obejść "wstecznego przycisku" w przeglądarce.

Tęskniłem pogrubiony tekst o zmiennych sesyjnych - lekceważenie, jeśli nie dotyczy:

jeden sposób na utrzymanie zmiennych całej stron po stronie serwera jest użycie $ _SESSION

pierwszy umieść sesję aktywną na następnej stronie PHP:

session_start(); 

po przesłaniu i przejściu na stronę 2, dodaj następujące:

$_SESSION['customer_name'] = $_POST['customer_name']; 

Jak dobrze, na pierwszej stronie, można zmienić element formularza jako takie:

<input type="text" name="customer_name" value="<?PHP if isset($_SESSION['customer_name'] || !empty($_SESSION['customer_name'])) { echo $_SESSION['customer_name']; } ?>"> 

to zachowa wypełnionego danych i wyświetlić go, gdy użytkownik powraca tot he stronę , a jeśli dodadzą coś innego, zostaną zaktualizowane, kiedy ponownie trafią na stronę 2.

1

Dlaczego nie chcesz korzystać z sesji php? Proszę podać jakikolwiek powód, aby jej nie używać. Pytam w ten sposób, ponieważ moja reputacja nie pozwala mi komentować pytań ani odpowiedzi innych niż moje własne. Plese nie rób -1.

Innym sposobem może być używanie plików cookie do tymczasowego przechowywania danych, ale to i wysyłanie danych tam iz powrotem w żądaniu postu jest naprawdę niepewne w porównaniu do sesji.

Powiązane problemy