0

我正在制作一个启动页面,用户必须输入他们的姓名和电子邮件地址才能下载一本书。这是我第一次这样做。当用户填写表单并点击提交时,我希望这本书自动开始下载,并且我希望他们的表单详细信息发送到我的电子邮件,以便我可以将它们添加到邮件列表中。

现在我的 HTML 表单看起来像这样(我正在使用 formmail):

<form id="myform" method="post" action="submit.php" name="myform" width="100%">
<input type="hidden" name="good_url" value="index.html#submitgood" />
<input type="hidden" name="bad_url" value="index.html#submitbad" />
<input type="hidden" name="env_report" value="REMOTE_HOST,REMOTE_ADDR,HTTP_USER_AGENT,AUTH_TYPE,REMOTE_USER" />
<input type="hidden" name="derive_fields" value="email=EmailAddr,realname=username" />
<input type="hidden" name="recipients" value="myaddress" />
<input type="hidden" name="subject" value="Book Download" />
<fieldset><legend>Please fill out the information below to download.<br><br>Filesize, 59.8 MB.</legend>
<table><tr><td><label for="Name" id="namelabel"><strong>Full name:</strong></label><br>
<input id="Name" type="text" name="username" title="Enter your full name" placeholder="Your Name" autofocus required /></td></tr>
<tr><td><label for="eMail" id="emaillabel"><strong>Email address:</strong></label><br>
<input id="eMail" type="email" name="EmailAddr" title="Enter your email address" placeholder="example@mail.com" required /></td></tr>
<tr><td><label for"eMail_repeat" id="emaillabel2"><strong>Repeat Email address:</strong></label>
<input id="eMail_repeat" type="email" name="email_addr_repeat" title="Repeat your email address" placeholder="example@mail.com" required oninput="check(this)" /></td></tr>
</table><br>
<input id="reset" type="reset" name="reset" value="Clear" />
<input id="submit" type="submit" name="submit" value="Submit" />
<input type="hidden" name="mail_options" value="HTMLTemplate=MYURL/fmtemplates/mailtemplate.html" /></fieldset></form>

您可以看到,当用户点击提交时,它会访问 submit.php,如下所示:

<?php
require_once('formmail.php');
require_once('pocketdownload.php');
?>

所以,问题是,第一个对象(在本例中为 formmail.php)运行良好,我收到了包含他们信息的电子邮件,但下载(这是 pocketdownload.php 所做的)永远不会发生。当我切换它们(将pocketdownload.php放在formmail.php之前)时,下载会完美进行,但电子邮件从未发送,成功弹出窗口告诉用户感谢您下载,从未出现。基本上,使用这个 PHP 代码,只有第一个可以工作。

这是 pocketdownload.php 的样子:

<?php
$file_url = 'http://LOCATION_OF_MY_FILE';
header("Content-type: application/pdf");
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url);
?>

所以!当用户点击提交时,有什么方法可以让这两个 .php 脚本同时运行?我在我的 PHP 代码中犯了错误吗?我听说这可以在 Ajax 中完成,但我不知道如何实现这样的东西。谁能给我指路?谢谢!!!


编辑:我通过保留 submit.php 的原样并更改用户点击提交时出现的弹出窗口来解决我自己的问题。它曾经说“感谢您下载”,但我将弹出窗口更改为“单击此处下载”(此处是文件的超链接)。

它不华丽,也不漂亮——但它完成了工作。

4

1 回答 1

-2

如果提交成功,只需重定向到 pdf。

例子

<?php

if(isset($_POST['submit'])) {

  /* do your things */

  header("Location: http://mywebsite.com/book.pdf")
  # OR
  echo '<meta http-equiv="Refresh" content="0; url=http://mywebsite.com/book.pdf" />';

}

?>
于 2013-10-23T19:31:05.870 回答