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

时间:2013-11-22 15:35:13

标签: php html session

我正在制作一个项目,将信息添加到数据库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>

1 个答案:

答案 0 :(得分:1)

以下是一些提示:

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

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

  • 上两位的插图:

    form1 - &gt; php script 1 - &gt;在会话中保存值 - &gt;重定向到表单2 - &gt; php script 2 - &gt;保存到会话 - &gt;重定向到表单3 - &gt; php script 3 - &gt;保存到会话 - &gt;保存到数据库并显示成功消息

  • 检查会话中是否存在所有字段,如下所示:

    <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'; },如果某个阶段未完成,您可以将其重定向回来。

  • 如果您曾经在网上购物,可以借用一些处理订单处理方式的想法(用户名/电子邮件 - &gt;地址 - &gt;信用卡信息 - &gt;结帐)。你也可以去Magento online demo store订购一些东西,看看到底做了什么,虽然它是用JavaScript实现的(这是一个演示,订单没有处理)

希望这些都有帮助。

干杯。