好的,这些是我的要求:注册页面应该在那里获取用户名和密码,在提交时,应该重定向到另一个注册表单,以获取他的个人详细信息,在提交时,应该转到另一个注册表单得到他的学术细节......
现在,只有在将个人信息输入数据库后,才应输入学术详细信息,并且只有在输入后才能输入用户名和密码...
如果任何插入操作无法执行,则应回滚整个过程,并且不应注册用户...
我知道我需要使用会话,但我不知道如何......帮助???
答案 0 :(得分:1)
我之前使用过这种系统,它不需要使用会话。它只是简单地保留每一步的表单数据。
问题是如果两个用户尝试注册相同的用户名,则不会保留用户名。如果第一个用户完成了第一步,则并不意味着它会阻止第二个用户注册和完成。
考虑以下步骤:
<form method="post" action="register.php">
<?php
if (empty($_POST['username']) || empty($_POST['password'])) {
echo '<input type="text" name="username">' .
'<input type="text" name="password">' .
'<input type="submit"></form>';
exit;
}
echo '<input type="hidden" name="username" value="' . htmlentities($_POST['username']) . '">' .
'<input type="hidden" name="password" value="' . htmlentities($_POST['password']) . '">';
if (empty($_POST['dob'])) {
echo '<input type="text" name="dob">' .
'<input type="submit"></form>';
exit;
}
echo '<input type="hidden" name="dob" value="' . htmlentities($_POST['dob']) . '">';
if (empty($_POST['grades'])) {
echo '<input type="grades">' .
'<input type="submit"></form>';
exit;
}
//$_POST['username'], $_POST['password'], $_POST['dob'], and $_POST['grades'] can now be processed here
让我们来看看吧。加载此页面后,我们可以看到POST [用户名]和POST [密码]将为空。将创建这两个文本字段的表单。
当用户提交表单时,将不会生成文本字段,而是包含先前输入的数据的两个隐藏元素将出现在表单中。下一步(dob)将显示。
继续,这也将转变为隐藏元素。最后,当所有数据都存在时,您可以一次处理所有数据。
所以基本上每一步看起来都是这样的:
Step 1 Step 2 Step 3
+----------+---------+ +----------+---------+ +----------+---------+
| username | textbox | | username | hidden | | username | hidden |
+----------+---------+ --> +----------+---------+ +----------+---------+
| password | textbox | | password | hidden | --> | password | hidden |
+----------+---------+ +----------+---------+ +----------+---------+
| button | submit | | dob | textbox | | dob | hidden |
+----------+---------+ +----------+---------+ +----------+---------+
| button | submit | | grades | textbox |
+----------+---------+ +----------+---------+
| button | submit |
+----------+---------+