1

我正在验证由两页组成的用户注册表单的输入。如果$_POST输入通过验证,则$valid变量设置为true

仅当第一个注册表单成功验证(即$valideq. to true)时,如何将用户带到第二个注册表单?

4

3 回答 3

1

在接收$_POST并传递验证后,使用标头将用户重定向到第二个注册页面。

在这样做之前,请将 $valid 的值更新true

  1. $_SESSION第二个注册页面进入并访问它
  2. 或者,如果您愿意,可以通过附加将其作为 GET 参数header('Location: http://example.com/2ndregistrationstep.php?valid=true')
于 2012-07-15T20:19:55.577 回答
1

您可以改为使用 Javascript 验证表单,然后在您的表单中添加onsubmit="validateForm()"并且您的validateForm()函数返回 true 或 false。如果它返回 false 表单将不会提交。

如果要使用 PHP 进行验证,则必须先提交表单,如果无效,则重定向回原始表单页面,但必须重新设置提交的值。我要做的是首先为页面顶部的表单字段实例化所有变量,并使用空白值进行设置。然后对像 valid=false 这样的标志进行部分检查,如果是,则使用发布的值更新这些变量。

例如:

<?php
$first_name = '';
$last_name = '';
$email = '';
$phone = '';
$valid = true;

// Check if valid:
if (isset($_POST['first_name'])) {
    // Validate string and if bad valid = false.
    $valid = false;

    // Set value from $_POST;
    $first_name = $_POST['first_name'];
}
if(isset($_POST['email'])) {
    // Perform validation.

    $valid = true;  // else false

    $email = $_POST['email'];
}

// Check valid flag.
if (!valid) {
    // Display some error to the user.
    $message = 'There was something wrong.';
} else {
    // Tedirect to the destination page.
    // header(..);
}

然后在页面顶部使用变量设置字段的值:

<form name="myForm" action="" method="post">
    <input type="text" name="first_name" value="<?=echo $first_name?>">
    <input type="text" name="last_name" value="<?=echo $last_name?>">
    <input type="text" name="email" value="<?=echo $email?>">
    <input type="text" name="phone" value="<?=$phone?>">
</form>

请注意,上述示例仅用于说明逻辑。它暴露了XSS和其他类型的漏洞。

于 2012-07-15T20:29:30.177 回答
0

我假设您直接在脚本中打印注册表单。为什么不添加简单的逻辑:

<?php

if (isset($_POST)) {
    // .. validate, and then 
    $_SESSION['valid'] = TRUE; // or FALSE
}

if (empty($_SESSION['valid'])) {
    // .. print first step
} else {
    // .. print second step
}
于 2012-07-15T20:29:59.550 回答