Может ли HTML-форма делать две вещи, когда пользователь нажимает «Отправить»?

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="[email protected]" 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="[email protected]" 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) работает отлично, и я получаю сообщение электронной почты со своей информацией, но загрузка (что и не является карнавалом.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);
?>

ТАК! Есть ли способ, когда пользователь нажимает SUBMIT, что оба этих скрипта.php будут запускаться одновременно? Я ошибаюсь в своем PHP-коде? Я слышал, что это можно сделать в Ajax, но я не знаю, как реализовать что-то подобное. Может ли кто-нибудь показать мне путь? Благодарю!!!


EDIT: я решил свою проблему, оставив submit.php так, как это происходит, и изменив всплывающее окно, которое появляется, когда пользователь нажимает submit. Раньше он говорил "Спасибо, что загрузил", но я изменил всплывающее окно, чтобы сказать "Нажмите ЗДЕСЬ для загрузки" (с ЗДЕСЬ, являющейся гиперссылкой на файл).

Это не кричаще, это некрасиво - но это проделало свою работу.

  • 3
    Нет, форма подчиняется только ОДНОМУ action . Но вы можете использовать javascript для выполнения нескольких представлений, например, ajax-вызовов, клонирования форм и автоматической отправки клонов, бла-бла-бла. Но в чистом html форма отправляется в одно место и только в одно место.
  • 0
    Что делает formmail.php предотвращения загрузки?
Показать ещё 4 комментария
Теги:
forms
download

1 ответ

-2

если submit успешно переадресовывается в 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" />';

}

?>
  • 0
    Это будет редактирование для submit.php?
  • 0
    Я попытался изменить submit.php на <? Php if (isset ($ _ POST ['submit'])) {require_once ('formmail.php'); require_once ( 'pocketdownload.php'); echo '<meta http-экв = "Обновить" content = "0; url = MYURL.pdf" />'; }?> Не сработало = [
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню