我正在驗證由兩頁組成的用戶註冊表單的輸入。如果$_POST
輸入通過驗證,則$valid
變量設置爲true
。如何驗證兩步表單?
如何使用戶只有在第一個註冊表單被成功驗證(即$valid
等於true
)的情況下才能進入第二個註冊表單?
我正在驗證由兩頁組成的用戶註冊表單的輸入。如果$_POST
輸入通過驗證,則$valid
變量設置爲true
。如何驗證兩步表單?
如何使用戶只有在第一個註冊表單被成功驗證(即$valid
等於true
)的情況下才能進入第二個註冊表單?
您可以使用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和其他類型的漏洞。
我假設您直接在腳本中打印註冊表單。爲什麼不加簡單的邏輯:
<?php
if (isset($_POST)) {
// .. validate, and then
$_SESSION['valid'] = TRUE; // or FALSE
}
if (empty($_SESSION['valid'])) {
// .. print first step
} else {
// .. print second step
}
你爲什麼不使用JavaScript客戶現場驗證,將是註冊過程的幫助很大 – swapnilsarwe 2012-07-15 20:14:20
漂亮很難說什麼沒有看到代碼,除此之外,你應該向用戶發送如果提交的數據是有效的,立即到第二步,但你已經知道了。 – JJJ 2012-07-15 20:14:52