Supongamos que tengo una página PHP que tiene tres formularios.
<label for="email">Email Address:</label> <input type="text" id="email" name="email"> <input type="hidden" id="code" name="code" value="42"> <input type="submit" value="Submit1"> <input type="number" id="code2" name="code2"> <input type="submit" value="Submit2"> <input type="number" id="code2" name="code2"> <input type="submit" value="Submit3">¿Cómo puedo programarlo?
Debe indicar la acción del formulario como el nombre del archivo. Entonces, si el archivo en el que está trabajando se llama example.php , debería verse así:
$email = trim(get_variable_value('email')); $code = trim(get_variable_value('code')); $code2 = trim(get_variable_value('code2')); //make sure to validate the input!! if it's not valid send back <? if(!isset($email)){ //alternatively, you can add a hidden input `stage`. I just don't like it, as it can be bypassed. ?> <form name="transferToNewForm" action="example.php" method="post"> <label for="email">Email Address:</label> <input type="text" id="email" name="email"> <input type="hidden" id="code" name="code" value="42"> <input type="submit" value="Submit1"> </form> <? } if(isset($email) && isset($code) && $code == 42){ ?> <form name="transferToNewerForm" action="example.php" method="post"> <label for="email">Email Address:</label> <input type="text" id="email" name="email" value="<?= $email ?>" readonly> <input type="number" id="code2" name="code2"> <input type="submit" value="Submit2"> </form> <? } if(isset($email) && isset($code2) && $code2 == 42){ ?> <form name="finalFrom" action="theActualPageYouWant.php" method="post"> <label for="email">Email Address:</label> <input type="text" id="email" name="email" value="<?= $email ?>" readonly> <input type="number" id="code2" name="code2"> <input type="submit" value="Submit3"> </form> <? } ?>Podrías probar este enfoque:
<?php function getFormContent() { $email = $_POST['email'] ?? null; //$email equals to null if it is undefined, to prevent errors if (!$email) { echo '<input type="text" name="email" placeholder="Email.." />'; echo '<input type="hidden" id="code" name="code" value="42">'; } else { echo '<input type="hidden" name="email" value="'.$email.'" />'; //keep email set after submitting first step } if ($email && $_POST['code']) { if (isset($_POST['code2']) && $_POST['code2'] == $_POST['code']) { //final form } else { //second step echo '<input type="number" id="code2" name="code2">'; echo '<input type="hidden" id="code" name="code" value="42">'; //we still need this in case user submitted a wrong code } } } ?> <form method="post"> <?= getFormContent() ?> <input type="submit" /> </form>