php+js表单-提交后将页面url粘贴到电子邮件表单中

lmyy7pcs  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(542)

我有一个基本表单,在发送表单后,我需要将页面的url插入电子邮件中,以便知道用户在表单中填写的位置。
我尝试了在这个论坛上找到的更多选择,但不幸的是没有一个有效。
如何编辑代码以正确发送并将url添加到电子邮件中。
事先非常感谢您的帮助

  1. $("#contactForm").validator().on("submit", function(event) {
  2. if (event.isDefaultPrevented()) {
  3. //handle the invalid form...
  4. formError();
  5. submitContactFormMSG(false, "Vyplňte prosím formulář správně!");
  6. } else {
  7. var filter = /^((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$/;
  8. if (filter.test($("#formphone").val())) {
  9. //everything looks good!
  10. event.preventDefault();
  11. submitcontactForm();
  12. } else {
  13. submitContactFormMSG(false, "Vložte prosím správný telefon!");
  14. return false;
  15. }
  16. }
  17. });
  18. function submitcontactForm() {
  19. //Variables With Form Content
  20. var formfname = $("#formfname").val();
  21. var formlname = $("#formlname").val();
  22. var formemail = $("#formemail").val();
  23. var formphone = $("#formphone").val();
  24. var forminfo = $("#forminfo").val();
  25. $.ajax({
  26. type: "POST",
  27. url: "/forms/kontaktni-formular.php",
  28. data: "&formfname=" + formfname + "&formlname=" + formlname + "&formemail=" + formemail + "&formphone=" + formphone + "&forminfo=" + forminfo,
  29. success: function(text) {
  30. if (text == "success") {
  31. contactFormSuccess();
  32. } else {
  33. formError();
  34. submitContactFormMSG(false, text);
  35. }
  36. }
  37. });
  38. }
  39. function contactFormSuccess() {
  40. $("#contactForm")[0].reset();
  41. submitContactFormMSG(true, "Vaše zpráva byla úspěšně odeslána :-)")
  42. }
  43. function formError() {
  44. $(".help-block.with-errors").removeClass('hidden');
  45. }
  46. function submitContactFormMSG(valid, msg) {
  47. if (valid) {
  48. var msgClasses = "h3 text-center col-12 text-success";
  49. } else {
  50. var msgClasses = "h3 text-center col-12 text-danger";
  51. }
  52. $("#msgContactFormSubmit").removeClass().addClass(msgClasses).text(msg);
  53. $('html,body').animate({
  54. scrollTop: $("#msgContactFormSubmit").offset().top - 80
  55. },
  56. 'slow');
  57. }
  1. .form-control {
  2. border: 1px solid #99CC33;
  3. border-radius: 10px;
  4. }
  5. .has-error .form-control {
  6. border-color: #ff0000;
  7. }
  8. .help-block {
  9. margin: 0;
  10. color: #ff0000;
  11. font-size: 12px;
  12. position: absolute;
  13. top: 22px;
  14. }
  15. label:first-child {
  16. margin-bottom: 20px;
  17. }
  18. .form-group {
  19. position: relative;
  20. }
  21. .contact-form {
  22. width: 90%;
  23. margin-left: 5%;
  24. }
  1. <form id="contactForm" name="contactForm" data-toggle="validator" class="row" accept-charset='UTF-8'>
  2. <div id="msgContactFormSubmit" class="hidden"></div>
  3. <div class="col-sm-6">
  4. <div class="row pad">
  5. <div class="form-group col-sm-6">
  6. <label for="formfname"><strong>Jméno</strong><div class="help-block with-errors"></div></label>
  7. <input name="formfname" id="formfname" placeholder="YYY" class="form-control" type="text" required data-error="Vložte jméno">
  8. </div>
  9. <!-- end form-group -->
  10. <div class="form-group col-sm-6">
  11. <label for="formlname"><strong>Příjmení</strong><div class="help-block with-errors"></div></label>
  12. <input name="formlname" id="formlname" placeholder="XXX" class="form-control" type="text" required data-error="Vložte příjmení">
  13. </div>
  14. <!-- end form-group -->
  15. <div class="form-group col-sm-6">
  16. <label for="formemail"><strong>E-mailová adresa</strong><div class="help-block with-errors"></div></label>
  17. <input name="formemail" id="formemail" placeholder="xxx@yyy.cz" pattern=".*@\w{2,}\.\w{2,}" class="form-control" type="email" required data-error="Vložte odpovídající e-mail">
  18. </div>
  19. <!-- end form-group -->
  20. <div class="form-group col-sm-6">
  21. <label for="formphone"><strong>Telefonní číslo</strong><div class="help-block with-errors"></div></label>
  22. <input name="formphone" id="formphone" placeholder="+420 XXXXXXXXX" pattern="^\+?\d{9,16}" class="form-control" type="text" required data-error="Vložte správné telefonní číslo">
  23. </div>
  24. <!-- end form-group -->
  25. </div>
  26. </div>
  27. <div class="form-group col-sm-6">
  28. <label for="forminfo"><strong>Další informace</strong></label>
  29. <textarea class="form-control" placeholder="Informace" name="forminfo" id="forminfo" rows="5"></textarea>
  30. </div>
  31. <!-- end form-group -->
  32. <div class="form-group col-sm-12">
  33. <button type="submit" id="submit" class="btn btn-shutter-out-horizontal col-sm-6 offset-sm-3">ODESLAT</button>
  34. </div>
  35. </form>

在php中,我有:

  1. <?php
  2. $errormsg = "";
  3. if (empty($_POST["formfname"])) { $errormsg .= "Jméno je povinné. ";} else {$formfname = $_POST["formfname"];}
  4. if (empty($_POST["formlname"])) {$errormsg .= "Příjmení je povinné. ";} else {$formlname = $_POST["formlname"];}
  5. if (empty($_POST["formemail"])) {$errormsg .= "Email je povinný. ";} else {$formemail = $_POST["formemail"];}
  6. if (empty($_POST["formphone"])) {$errormsg .= "Telefonní číslo je povinné ";} else {$formphone = $_POST["formphone"];}
  7. $success = '';
  8. $body_message = '';
  9. if (!$errormsg){
  10. $headers = 'From: '. $formfname .' '. $formlname .' <'. $email .'>' . "\r\n" .
  11. 'Reply-To: ' . $email . "\r\n" .
  12. 'X-Mailer: PHP/' . phpversion() . "\r\n" .
  13. 'Content-type: text/html; windows-1250' ;
  14. $to = "xxx@yyy.cz";
  15. $subject = "Kontaktní formulář";
  16. //telo mailu
  17. $body_message .= "<strong>Jméno:</strong> " . $formfname."<br>\n";
  18. $body_message .= "<strong>Přímení:</strong> " . $formlname."<br>\n";
  19. $body_message .= "<strong>E-mailová adresa:</strong> " . $formemail."<br>\n";
  20. $body_message .= "<strong>Telefon:</strong> " . $formphone."<br>\n";
  21. $body_message .= "<strong>Další informace:</strong> " . $forminfo."<br>\n";
  22. $success = @mail($to, $subject, $body_message, $headers);
  23. }
  24. if ($success){
  25. echo "success";
  26. }else{
  27. echo "Něco se pokazilo: " . $errormsg;
  28. }?>
b4wnujal

b4wnujal1#

您可能正在寻找 $_SERVER['HTTP_HOST']$_SERVER['REQUEST_URI'] 在php中。假设你的地址是 https://example.com/foo.php?id=1 . 然后 HTTP_HOST 返回 example.comREQUEST_URI 返回 /bar.php?id=1 . 有两种选择:
第一个选项,使用php。但是,只有当php代码与表单位于同一站点时,这才有效。它可能是这样的:

  1. $body_message .= "<strong>Site:</strong> ".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br>\n";

而不是使用url,你可以简单地使用任何你想要的可能更可读的东西。比如:

  1. $body_message .= "<strong>Site:</strong> Get more information about us<br>\n";

第二个选项,使用隐藏表单字段。

  1. <?php
  2. $url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  3. echo '<input type="hidden" name="formurl" id="formurl" value="'.$url.'">';

显然,您还必须将新表单字段添加到javascript中:

  1. var formurl= $("#formurl").val();
  2. //other code...
  3. data: "&formfname=" + formfname + "&formlname=" + formlname + "&formemail=" + formemail + "&formphone=" + formphone + "&forminfo=" + forminfo + "&formurl=" + formurl,
  4. //other code...

编辑:您必须编辑php文件。否则脚本不知道还有另一个表单字段。只剩下两行了:

  1. <?php
  2. //There's a new form field, so tell PHP it's there. No $errormsg is needed because it has nothing to do with the user input
  3. if (empty($_POST["formurl"])) {$formurl = "no url given";} else {$formurl= $_POST["formurl"];}
  4. //other code...
  5. //Then append the URL to the message
  6. $body_message .= "<strong>Site:</strong> ".$formurl."<br>\n";

也就是说,我总是更喜欢第一种选择而不是第二种。与所有输入字段一样,用户可以轻松地操纵隐藏表单字段的值。因此,即使他是从example.com/contact.php发送的,在邮件中,它似乎是从example.com/thisurldoesnotexist.php发送的。第二个解决方案可以是一个选项,例如,php代码位于与html表单不同的站点上。

展开查看全部

相关问题