使用PHP进行3层注册

时间:2014-07-02 05:23:15

标签: php session registration

好的,这些是我的要求:注册页面应该在那里获取用户名和密码,在提交时,应该重定向到另一个注册表单,以获取他的个人详细信息,在提交时,应该转到另一个注册表单得到他的学术细节......

现在,只有在将个人信息输入数据库后,才应输入学术详细信息,并且只有在输入后才能输入用户名和密码...

如果任何插入操作无法执行,则应回滚整个过程,并且不应注册用户...

我知道我需要使用会话,但我不知道如何......帮助???

1 个答案:

答案 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  |
                                                                +----------+---------+