【问题标题】:Website (HTML) Read Only Form Email Submission网站 (HTML) 只读表单电子邮件提交
【发布时间】:2018-04-17 11:28:40
【问题描述】:

我有一个正在测试的网站,它的工作原理是 步骤 1) 在 page1.php 中输入详细信息的表单 步骤 2) 使用 POST 功能,键入的表单值以只读表单格式显示在下一页 page2.php 中。有点像他们键入的信息的摘要。在底部,他们将单击“确认”,并且应该发送一封包含该 page2.php 的完整详细信息的电子邮件。

我的问题: 我可以让它从 page1.php 发送电子邮件,在表单页面中,并在单击提交时发送电子邮件。但这不是我想要的,我希望它在他们从 page2.php 确认他们的详细信息后发送电子邮件。我在哪里得到错误。

我的 page2.php 文件具有如下代码。 form-to-email.php 是发送电子邮件的操作,当它直接从表单发送时起作用,而不是从这个 page2.php 只读页面来确认详细信息。

我做错了什么?

                <form action="form-to-email.php" method="post" class="box readonly">
                    <h3>Vehicle Details</h3>
                    <div class="f-row">
                        <div class="one-fourth">Type</div>
                        <div class="three-fourth">Transport Service</div>
                    </div>
                    <div class="f-row">
                        <div class="one-fourth">Vehicle</div>
                        <div class="three-fourth">14 Foot Lorry</div>
                    </div>

                    <h3>Customer Details</h3>

                    <div class="f-row">
                        <div class="one-fourth">Name</div>
                        <div class="three-fourth"><?php $name = $_POST["name"]; echo $name; ?></div>
                    </div>
                    <div class="f-row">
                        <div class="one-fourth">Phone</div>
                        <div class="three-fourth"><?php $name = $_POST["number"]; echo $name; ?></div>
                    </div>
                    <div class="f-row">
                        <div class="one-fourth" label for='email'>Email</div>
                        <div class="three-fourth"><?php $name = $_POST["email"]; echo $name; ?></div>
                    </div>

                    <h3>Job Details</h3>
                    <div class="f-row">
                        <div class="one-fourth">Date</div>
                        <div class="three-fourth"><?php $name = $_POST["date"]; echo $name; ?></div>
                    </div>
                    <div class="f-row">
                        <div class="one-fourth">Time</div>
                        <div class="three-fourth"><?php $name = $_POST["time"]; echo $name; ?></div>
                    </div>
                    <div class="f-row">
                        <div class="one-fourth">Pick Up</div>
                        <div class="three-fourth"><?php $name = $_POST["pick"]; echo $name; ?></div>
                    </div>
                    <div class="f-row">
                        <div class="one-fourth">Drop Off</div>
                        <div class="three-fourth"><?php $name = $_POST["drop"]; echo $name; ?></div>
                    </div>
                    <div class="f-row">
                        <div class="one-fourth">Items</div>
                        <div class="three-fourth"><?php $name = $_POST["items"]; echo $name; ?></div>
                    </div>
                    <div class="f-row">
                        <div class="one-fourth">Remarks</div>
                        <div class="three-fourth"><?php $name = $_POST["remarks"]; echo $name; ?></div>
                    </div>

                    <h3 align="center">TOTAL: $80 SGD</h3><input type="submit" class="btn medium color" value="Confirm (Cash Payment)"></form>

帮助。

【问题讨论】:

  • 从第 1 页发布到第 2 页。然后第 2 页发布到他的邮件脚本,包括从第 1 页获得的内容

标签: php html css forms email


【解决方案1】:

主要问题是您在page2.php 上的&lt;form&gt; 中没有任何输入。所以你提交的是空的。

至少有两种方法可以解决:


1 - 将您的值存储在php session

在您的 page2.php 脚本顶部添加以下行:

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

以及form-to-email.php 顶部的以下行:

<?php
   session_start();
   $_POST = $_SESSION['post_values'];
   $_SESSION['post_values'] = array(); // this will clear the values, so they wouldn't get resubmitted on page refresh. You could probably use `unset($_SESSION['post_values'])` but that sometimes doesn't work, so it's safer to redefine it as empty array.
   ...
?>

php session 中存储值将允许您将这些值传递给同一域中的其他脚本。请注意,每次你想使用$_SESSION 对象时,你必须先用session_start() 开始会话。这必须在输出任何内容之前完成。


2 - 像这样向您的代码添加隐藏输入(对于每个字段):

   <div class="f-row">
      <div class="one-fourth">Name</div>
      <div class="three-fourth"><input type="hidden" name="name" value="<?php json_encode($_POST["name"]);?>/><?php echo $_POST["name"];?></div>
   </div>

   <div class="f-row">
      <div class="one-fourth">Phone</div>
      <div class="three-fourth"><input type="hidden" name="number" value="<?php json_encode($_POST["number"]);?>/><?php echo $_POST["number"];?></div>
   </div>

   ... etc.

这将创建不可见的输入,以便可以再次发送值。请注意,我使用的是json_encode() 函数,因此如果值包含例如",它不会破坏HTML 语法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2022-01-26
    • 2015-11-11
    • 1970-01-01
    • 2011-10-12
    相关资源
    最近更新 更多