2013-04-23 13 views
7

Ich habe ein Registrierungsformular erstellt, das seine Variablen erfolgreich von der Registrierungsseite (go-gold.php) an eine Zusammenfassungs-/Bestätigungsseite (go-gold-summary.php) übergibt. Die Daten werden auf der zweiten Seite korrekt angezeigt.Senden von PHP-Variablen zwischen Seiten

Ich möchte jedoch eine Bildschaltfläche verwenden, um zur Registrierungsseite zurückzukehren, falls der Benutzer einen Eingabefehler gemacht hat. Zurück gehend, sollte das ursprüngliche Formular jetzt mit den Daten gefüllt werden, die zuerst eingegeben wurden.

Das Problem ist, dass ich die Daten von der zweiten Seite nicht zurück senden/zurückgeben kann, zurück zum ersten. Meine Textfelder sind leer. Ich möchte keine Sitzungsvariablen verwenden.

Der Code wird von der gesamten Seite abgeschnitten.

Registrierungsseite (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> 

Zusammenfassung Page (go-gold-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> 

Dank!

+3

Darf ich fragen, warum '$ _SESSION' tabu ist? – svidgen

Antwort

2

go-gold-summary.php sollte so geändert werden.

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

merken, wie ich diese Linie

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

in diesem

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

$ _POST geändert haben, ist ein assoziatives Array und wie Sie das Formular abschicken wird es wie folgt gefüllt werden:

$_POST["index"] = value; 

wo "index" ist das Textfeld "name" und value ist der Textfeldwert.

Sie haben das in Ihrem Code verpasst. Aktualisieren Sie es einfach mit meinem Code und es wird funktionieren

+0

Brilliant, das hat perfekt funktioniert, danke! –

+0

Wenn Sie ähnliche Probleme in der Zukunft haben, versuchen Sie, var_dump ($ _ POST) zu schreiben; ganz oben in Ihrem php-dokument und Sie werden sehen, warum und wo Sie das Falsche tun. – Saturnix

0

Es gibt sehr wenige Möglichkeiten, Variablen auf mehreren Seiten zu verwalten. Die Alternative besteht darin, auf der zweiten Seite ein separates Formular mit versteckten Textfeldern zu haben, die die $ _POST-Daten enthalten, und die Übergabeschaltfläche ruft die vorherige Seite auf. Leider gibt es keine Möglichkeit, den "Zurück-Button" eines Browsers zu umgehen.

vermisste ich den fett gedruckten Text über die Session-Variablen - Mißachtung, wenn dies nicht zutrifft:

eine Möglichkeit, Variablen über mehrere Seiten auf der Serverseite zu halten ist

erste $ _SESSION

verwenden folgendes an der Spitze Ihrer PHP-Seiten umfassen eine Sitzung aktiv zu halten:

session_start(); 

, wenn Sie die für einreichen und auf Seite 2, bewegen hinzufügen Folgende:

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

Wie gut, auf der ersten Seite, könnten Sie das Formularelement als solche ändern:

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

dies wird die ausgefüllten Daten halten und anzeigen, wenn der Benutzer kehrt er Seite tot und wenn sie etwas anderes einfügen, wird es aktualisiert, wenn sie Seite 2 wieder treffen.

1

Warum möchten Sie nicht die PHP-Sitzung verwenden? Bitte geben Sie einen Grund an, es nicht zu benutzen. Ich frage diesen Weg, weil mein Ruf es mir nicht erlaubt, Fragen oder Antworten zu meinen eigenen zu kommentieren. Bitte nicht -1 dafür. Ein anderer Weg könnte die Verwendung von Cookies sein, um die Daten vorübergehend zu speichern, aber das und das Posten der Daten in der Post-Anfrage ist im Vergleich zur Sitzung wirklich unsicher.

Verwandte Themen