我有一个基本表单,在发送表单后,我需要将页面的url插入电子邮件中,以便知道用户在表单中填写的位置。
我尝试了在这个论坛上找到的更多选择,但不幸的是没有一个有效。
如何编辑代码以正确发送并将url添加到电子邮件中。
事先非常感谢您的帮助
$("#contactForm").validator().on("submit", function(event) {
if (event.isDefaultPrevented()) {
//handle the invalid form...
formError();
submitContactFormMSG(false, "Vyplňte prosím formulář správně!");
} else {
var filter = /^((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$/;
if (filter.test($("#formphone").val())) {
//everything looks good!
event.preventDefault();
submitcontactForm();
} else {
submitContactFormMSG(false, "Vložte prosím správný telefon!");
return false;
}
}
});
function submitcontactForm() {
//Variables With Form Content
var formfname = $("#formfname").val();
var formlname = $("#formlname").val();
var formemail = $("#formemail").val();
var formphone = $("#formphone").val();
var forminfo = $("#forminfo").val();
$.ajax({
type: "POST",
url: "/forms/kontaktni-formular.php",
data: "&formfname=" + formfname + "&formlname=" + formlname + "&formemail=" + formemail + "&formphone=" + formphone + "&forminfo=" + forminfo,
success: function(text) {
if (text == "success") {
contactFormSuccess();
} else {
formError();
submitContactFormMSG(false, text);
}
}
});
}
function contactFormSuccess() {
$("#contactForm")[0].reset();
submitContactFormMSG(true, "Vaše zpráva byla úspěšně odeslána :-)")
}
function formError() {
$(".help-block.with-errors").removeClass('hidden');
}
function submitContactFormMSG(valid, msg) {
if (valid) {
var msgClasses = "h3 text-center col-12 text-success";
} else {
var msgClasses = "h3 text-center col-12 text-danger";
}
$("#msgContactFormSubmit").removeClass().addClass(msgClasses).text(msg);
$('html,body').animate({
scrollTop: $("#msgContactFormSubmit").offset().top - 80
},
'slow');
}
.form-control {
border: 1px solid #99CC33;
border-radius: 10px;
}
.has-error .form-control {
border-color: #ff0000;
}
.help-block {
margin: 0;
color: #ff0000;
font-size: 12px;
position: absolute;
top: 22px;
}
label:first-child {
margin-bottom: 20px;
}
.form-group {
position: relative;
}
.contact-form {
width: 90%;
margin-left: 5%;
}
<form id="contactForm" name="contactForm" data-toggle="validator" class="row" accept-charset='UTF-8'>
<div id="msgContactFormSubmit" class="hidden"></div>
<div class="col-sm-6">
<div class="row pad">
<div class="form-group col-sm-6">
<label for="formfname"><strong>Jméno</strong><div class="help-block with-errors"></div></label>
<input name="formfname" id="formfname" placeholder="YYY" class="form-control" type="text" required data-error="Vložte jméno">
</div>
<!-- end form-group -->
<div class="form-group col-sm-6">
<label for="formlname"><strong>Příjmení</strong><div class="help-block with-errors"></div></label>
<input name="formlname" id="formlname" placeholder="XXX" class="form-control" type="text" required data-error="Vložte příjmení">
</div>
<!-- end form-group -->
<div class="form-group col-sm-6">
<label for="formemail"><strong>E-mailová adresa</strong><div class="help-block with-errors"></div></label>
<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">
</div>
<!-- end form-group -->
<div class="form-group col-sm-6">
<label for="formphone"><strong>Telefonní číslo</strong><div class="help-block with-errors"></div></label>
<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">
</div>
<!-- end form-group -->
</div>
</div>
<div class="form-group col-sm-6">
<label for="forminfo"><strong>Další informace</strong></label>
<textarea class="form-control" placeholder="Informace" name="forminfo" id="forminfo" rows="5"></textarea>
</div>
<!-- end form-group -->
<div class="form-group col-sm-12">
<button type="submit" id="submit" class="btn btn-shutter-out-horizontal col-sm-6 offset-sm-3">ODESLAT</button>
</div>
</form>
在php中,我有:
<?php
$errormsg = "";
if (empty($_POST["formfname"])) { $errormsg .= "Jméno je povinné. ";} else {$formfname = $_POST["formfname"];}
if (empty($_POST["formlname"])) {$errormsg .= "Příjmení je povinné. ";} else {$formlname = $_POST["formlname"];}
if (empty($_POST["formemail"])) {$errormsg .= "Email je povinný. ";} else {$formemail = $_POST["formemail"];}
if (empty($_POST["formphone"])) {$errormsg .= "Telefonní číslo je povinné ";} else {$formphone = $_POST["formphone"];}
$success = '';
$body_message = '';
if (!$errormsg){
$headers = 'From: '. $formfname .' '. $formlname .' <'. $email .'>' . "\r\n" .
'Reply-To: ' . $email . "\r\n" .
'X-Mailer: PHP/' . phpversion() . "\r\n" .
'Content-type: text/html; windows-1250' ;
$to = "xxx@yyy.cz";
$subject = "Kontaktní formulář";
//telo mailu
$body_message .= "<strong>Jméno:</strong> " . $formfname."<br>\n";
$body_message .= "<strong>Přímení:</strong> " . $formlname."<br>\n";
$body_message .= "<strong>E-mailová adresa:</strong> " . $formemail."<br>\n";
$body_message .= "<strong>Telefon:</strong> " . $formphone."<br>\n";
$body_message .= "<strong>Další informace:</strong> " . $forminfo."<br>\n";
$success = @mail($to, $subject, $body_message, $headers);
}
if ($success){
echo "success";
}else{
echo "Něco se pokazilo: " . $errormsg;
}?>
1条答案
按热度按时间b4wnujal1#
您可能正在寻找
$_SERVER['HTTP_HOST']
及$_SERVER['REQUEST_URI']
在php中。假设你的地址是https://example.com/foo.php?id=1
. 然后HTTP_HOST
返回example.com
及REQUEST_URI
返回/bar.php?id=1
. 有两种选择:第一个选项,使用php。但是,只有当php代码与表单位于同一站点时,这才有效。它可能是这样的:
而不是使用url,你可以简单地使用任何你想要的可能更可读的东西。比如:
第二个选项,使用隐藏表单字段。
显然,您还必须将新表单字段添加到javascript中:
编辑:您必须编辑php文件。否则脚本不知道还有另一个表单字段。只剩下两行了:
也就是说,我总是更喜欢第一种选择而不是第二种。与所有输入字段一样,用户可以轻松地操纵隐藏表单字段的值。因此,即使他是从example.com/contact.php发送的,在邮件中,它似乎是从example.com/thisurldoesnotexist.php发送的。第二个解决方案可以是一个选项,例如,php代码位于与html表单不同的站点上。