使用不同的 "GET" 变量提交到当前 url 的重定向

Submit redirect to current url with different "GET" variables

我在一个名为 SignUpForm.php 的文件中有一个表单,当它被提交时,页面被重定向到 url http://localhost/MySite/Includes/SignUp.php?step=1,并且在文件 [=15] =] 我有 3 个表单,每个表单只显示其对应的 ?step=x 值。在第一种形式(显示为 ?step=1 的形式)中,我有以下代码

if(isset($_GET['step']) === true && empty($_GET['step']) === false){
        if(isset($_POST['SignUpStep1Submit'])) {
                // some code here
                header('Location: SignUp.php?step=2');
        }

// forms displaying codes with the $_GET['step'] conditions

所以问题是我想提交第一个表单,所以它会将我重定向到同一个 .php 文件,但是在执行前面的代码后使用 ?step=2 ,当我提交表单时,我最终使用 http://localhost/MySite/Includes/SignUp.php... 未设置 step 变量,//some code here 中的代码根本没有执行,它所做的只是将我重定向到 SignUp.php 而没有 [=22] =] 值,留给我一个空白页

为什么不直接更改表单操作以包含步骤变量,这样对于表单 1,操作将是

<form name="form1" action="/signup.php?step=2" method="post"></form>

对于表格 2,它将是

<form name="form2" action="/signup.php?step=3" method="post"></form>

要在提交表单之前检查表单值是否有效,您可以使用 patternrequired 属性,例如

<input name="firstname" pattern=".{3,}" required title="Your first name should be at least 3 characters long">

<input name="city" pattern=".{1,30}" required title="The country field shouldn't be more than 30 characters">

required 检查输入框是否已填写。

pattern 使用正则表达式模式来检查已根据...模式填充的值的类型。这里有更多信息:https://www.w3schools.com/tags/att_input_pattern.asp