我正在验证包含两个页面的用户注册表单的输入。如果$_POST
输入通过了验证,则$valid
变量设置为true
。
如果第一次注册表单成功验证(即$valid
等式为true
),如何将用户带到第二个注册表单?
答案 0 :(得分:1)
收到$_POST
并使用header将验证重定向用户传递到第二个注册页面。
在此之前,请将$ valid的值更新为true
$_SESSION
并在第二个注册页面上访问header('Location: http://example.com/2ndregistrationstep.php?valid=true')
答案 1 :(得分: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和其他类型的漏洞。
答案 2 :(得分:0)
我假设您直接在脚本中打印注册表单。为什么不添加简单的逻辑:
<?php
if (isset($_POST)) {
// .. validate, and then
$_SESSION['valid'] = TRUE; // or FALSE
}
if (empty($_SESSION['valid'])) {
// .. print first step
} else {
// .. print second step
}