中断$ _POST到预览输入

时间:2011-06-29 23:00:14

标签: php mysql webforms

我已经建立了一个数据库,并通过PHP中的$ _POST将表单数据提交给它,我也设置了我的页面,并从数据库中提取字段并显示它们。我知道不是火箭科学。

但是我现在要做的是在表单提交和数据库插入之间放置一个页面,以便用户有机会检查他们的输入。

我已创建此页面并使用$ _POST数据显示表单中的数据(因为它尚未输入到数据库中),但是我想知道如果用户批准提交,我会如何将其插入数据库。 (我已经尝试按下提交按钮从$ _POST数据运行INSERT查询,但是因为(我假设)我已经中断了原始表单提交和INSERT查询之间的流程,所以我得到的是无法识别的错误列表变量

所以我所拥有的是这个过程:

form.php / user使用$ _POST

输入信息

preview.php / user是使用$ _POST预览的信息,会话代码开始(下面)

submit.php / MySql查询运行但返回未定义索引的所有错误

这是我的会话开始代码:

session_start();
if (isset($_POST['preview'])) { 
    $_SESSION['company_name'] = $_POST['company_name'];
    etc etc - remaining form field names
} 

3 个答案:

答案 0 :(得分:1)

POST数据不会自动传递到其他页面。将提交的数据保存在会话中并在确认页面之后从那里读取,或者使用<input type="hidden">元素将所有数据插回到页面中,以便可以将它们重新提交为POST。 / p>

使用会话的过程的简单说明:

form.php的

<form action="confirm.php" ...>
    ...
</form>

confirm.php

<?php
session_start();
$_SESSION['data'] = $_POST;
?>

Please confirm:

Name: <?php echo htmlspecialchars($_POST['name']); ?>
...

<a href="save.php">Confirm</a>

save.php

<?php
session_start();
$data = $_SESSION['data'];

// save $data to database

答案 1 :(得分:0)

您应该使用3种模式

  • 显示
  • 验证
  • 插入

快速简单的方法就是使用GET参数或隐藏字段来说明表单的最后状态。第一次将其设置显示为DISPLAY。表单提交后,您的脚本会查看该字段,知道DISPLAY到达后VERIFY,并显示验证页面。用户提交,脚本查看该字段,知道在验证后插入数据库,并且您预先形成相关查询。

之前不确定你是怎么做的,但我认为你是重定向或只是让用户点击一个链接,这会丢失所有$ _POST数据

答案 2 :(得分:0)

除非我误解你在说什么/做什么,否则我会做这样的事情:

当用户点击“保存”(或其他)按钮时,劫持该点击事件并使用表单数据进行预览业务。当他们点击“确认”时,将数据发送到服务器并将其保存到数据库。

同样,我不是百分百确定这是否有效,但也许这是一个开始的地方。

祝你好运!