带有会话的PHP HTML多步骤页面


PHP HTML Multi-step Page with sessions

我正在做一个项目,将信息添加到数据库Mysql中。这是一个协议,我们必须制作3个带有会话的表格,并通过STEPS提供注册和用户,这个会话用于保存记录,如果我在第2步,我可以在第1步或第3步回滚并编辑一些内容。这应该通过会话来完成。我做了一些事情,我希望你能告诉我如何继续。我会立即发布我的代码。

我知道代码是Lame,但我现在正在学习。非常感谢。这是我注册的第一步。我该怎么继续?

<?php
session_start();
// $_SESSION
$fname = '';
if (isset($_SESSION['user_fname']) && !empty($_SESSION['user_fname'])) {
  $fname = $_SESSION['user_fname'];
}
$connection = mysql_connect("localhost","root","");
if (!$connection) {
      die('Mysql Could not been established ' . mysql_error());
  }
  else{ 
        $db_name = "phplab_course_project";
        mysql_select_db($db_name, $connection);
        if(isset($_POST['submit'])){
            if($_POST['user_fname']!="" && $_POST['user_mname']!="" && $_POST['user_lname']!="" && $_POST['user_login']!="" && $_POST['user_email']!="" && $_POST['user_phone']!=""){
                $sql = "insert into users(user_fname, user_mname, user_lname, user_login, user_email, user_phone )
                values('".$_POST['user_fname']."', '".$_POST['user_mname']."', '".$_POST['user_lname']."', '".$_POST['user_login']."', '".$_POST['user_email']."', '".$_POST['user_phone']."');";
                mysql_query($sql, $connection);
                printf("The data is inserted id %d'n", mysql_insert_id());
            }
        }
  }
?> 
<html>
    <body>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table>
                <tr>
                Лични данни<br>
                    <br><td>Firstname*</td>
                    <td>
                        <input type="text" name="user_fname" value="<?php echo $fname;?>" required />
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>Surname </td>
                    <td><input type="text" name="user_mname" /></td>
                    <td></td>
                </tr>
                <tr>
                    <td>Lastname* </td>
                    <td><input type="text" name="user_lname" required /></td>
                    <td></td>
                </tr>
                <tr>
                    <td>Username (login)* </td>
                    <td><input type="text" name="user_login" required /></td>
                    <td></td>
                </tr>
                <tr>
                    <td>Mail* </td>
                    <td><input type="text" name="user_email" required /></td>
                    <td></td>
                </tr>
                <tr>
                    <td>Phone </td>
                    <td><input type="text" name="user_phone" /></td>
                    <td></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" name='submit' value="Save"/></td>
                    <td></td>
                </tr>
            </table>        
        </form>
    </body>
</html>

以下是一些提示:

  • 制作一个单独的函数或类方法来分别处理每个阶段。有一些方法可以跟踪发送给您的阶段数据-例如,您可以在每个表单中使用值为stage1stage2stage3的隐藏输入。这样,您就可以将输入发送到相应的函数或类方法。

  • 仅将阶段之间的信息存储在会话中,并且仅在所有阶段完成并且所有字段都具有有效值之后插入数据库

  • 上面两个示例:

    form1->php脚本1->save values in session->redirect to form 2->php脚本2->save to session->redrect to form 3->php脚本3->save to session->save to database并显示成功消息

  • 检查所有字段(如果它们存在于会话中),如下所示:

    <input type="text" name="item" <?php if (isset($_SESSION['item']) echo 'value="' . htmlspecialchars($_SESSION['item'], ENT_QUOTES) . '"'; ?>/>

如果您返回(点击浏览器返回按钮),默认情况下会保存字段值,但如果您通过链接或重定向返回,PHP将注意不要丢失这些值。

  • 您可以在PHP中使用标志来查看哪个阶段已经完成(即if ([stage fields are filled and valid]) { $_SESSION['stage1'] = 'completed'; }),如果一个阶段没有完成,您可以将它们重定向回

  • 如果你曾经在网上购物,你可以借用他们处理订单的方式(用户名/电子邮件->地址->信用卡信息->结账)。你也可以去Magento在线演示商店,订购一些东西,看看到底在做什么,尽管它是用JavaScript实现的(这是一个演示,订单不处理)

希望这些能有所帮助。

干杯。