ユーザーが本をダウンロードするために自分の名前と電子メール アドレスを入力する必要があるスプラッシュ ページを作成しています。これは初めてのことです。ユーザーがフォームに入力して [送信] をクリックすると、本のダウンロードが自動的に開始され、フォームの詳細がメールに送信され、メーリング リストに追加できるようになります。
現在、私の 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 が行うことです) が行われないことです。それらを切り替えると(formmail.phpの前にpocketdownload.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);
?>
それで!ユーザーが SUBMIT を押したときに、両方の .php スクリプトが同時に実行されるようにする方法はありますか? 私の PHP コードは間違っていますか? これは Ajax でできると聞きましたが、そのようなものを実装する方法がわかりません。誰か道を教えてくれませんか?ありがとう!!!
編集: submit.php をそのままにして、ユーザーが送信を押したときに表示されるポップアップを変更することで、私自身の問題を解決しました。以前は「ダウンロードしていただきありがとうございます」と表示されていましたが、ポップアップを「ここをクリックしてダウンロードしてください」と表示するように変更しました (ここはファイルへのハイパーリンクです)。
派手でもなく、きれいでもありませんが、仕事はうまくいきました。