PHP 联系表 - 附件限制问题,附加字段,发送后重置表单
PHP contact form - attachment limit problem, additional field, reset form after sending
我正在使用 PHPPOT 网站上的“jQuery 使用 PHP 的附件联系表”,但我需要你的帮助来解决我所提到的问题。
首先,我想增加附件限制,现在是 2 MB。我要求我的 ISP 在 php.ini 中设置新参数,但他们说我的限制已经是 32 MB。不幸的是,当我尝试发送大于 2 MB 的文件时,我收到消息“无法访问文件:”并收到没有附件的邮件。
第二件事,我想在我的联系表中添加额外的“电话号码”,我已经按照逻辑完成了所有我得出的结论(只是说我是 PHP 菜鸟 :( )但我无法将此信息添加到我的电子邮件中。
还有最后一件事...如何在成功发送后强制重置表单?
非常感谢!!!
下面是 PHP 文件,你可以在这里看到我的表格:https://test.arhviz.rs/Test.html
index.php
<style>
body{width:100%;}
#frmContact {border-top:#F0F0F0 0px solid;background:rgba(250,248,248,0.00);padding:10px;}
#frmContact div{margin-bottom: 15px}
#frmContact div label{margin-left: 5px}
.demoInputBox{padding:10px; border:#27aae1 0px solid; border-radius:4px;background-color:#C6C6C6;width:100%;}
.error{background-color: #FF5A5A;border:#AA4502 0px solid;padding: 5px 10px;color: #FFFFFF;border-radius:4px;}
.success{background-color: #27AAE1;border:#0FA015 0px solid;padding: 5px 10px;color: #FFFFFF;border-radius:4px;}
.info{font-size:.8em;color: #FF5A5A;letter-spacing:2px;padding-left:5px;}
.btnAction{background-color:#27AAE1;border:0;padding:10px 40px;color:#FFF;border:#F0F0F0 0px solid; border-radius:4px;}
</style>
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function (e){
$("#frmContact").on('submit',(function(e){
e.preventDefault();
$('#loader-icon').show();
var valid;
valid = validateContact();
if(valid) {
$.ajax({
url: "contact_mail.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data){
$("#mail-status").html(data);
$('#loader-icon').hide();
},
error: function(){}
});
}
}));
function validateContact() {
var valid = true;
$(".demoInputBox").css('background-color','');
$(".info").html('');
if(!$("#userName").val()) {
$("#userName-info").html("(required)");
$("#userName").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#userEmail").val()) {
$("#userEmail-info").html("(required)");
$("#userEmail").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#userEmail").val().match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)) {
$("#userEmail-info").html("(invalid)");
$("#userEmail").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#userPhone").val().match(/[0-9]/)) {
$("#userPhone-info").html("(invalid)");
$("#userPhone").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#subject").val()) {
$("#subject-info").html("(required)");
$("#subject").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#content").val()) {
$("#content-info").html("(required)");
$("#content").css('background-color','#FF5A5A');
valid = false;
}
return valid;
}
});
</script>
<form id="frmContact" action="" method="post">
<div id="mail-status"></div>
<div>
<label style="padding-top:20px;">Ime</label>
<span id="userName-info" class="info"></span><br/>
<input type="text" name="userName" id="userName" class="demoInputBox">
</div>
<div>
<label>E-mail</label>
<span id="userEmail-info" class="info"></span><br/>
<input type="text" name="userEmail" id="userEmail" class="demoInputBox">
</div>
<div>
<label>Telefon</label>
<span id="userPhone-info" class="info"></span><br/>
<input type="text" name="userPhone" id="userPhone" class="demoInputBox">
</div>
<div>
<label>Pošaljite Vaš projekat (DWG, DXF ili PDF):</label><br/>
<input type="file" name="attachmentFile" id="attachmentFile" class="demoInputBox">
</div>
<div>
<label>Tema</label>
<span id="subject-info" class="info"></span><br/>
<input type="text" name="subject" id="subject" class="demoInputBox">
</div>
<div>
<label>Poruka</label>
<span id="content-info" class="info"></span><br/>
<textarea name="content" id="content" class="demoInputBox" cols="60" rows="6"></textarea>
</div>
<div>
<input type="submit" value="Send" class="btnAction" />
</div>
</form>
<div id="loader-icon" style="display:none;"><img src="LoaderIcon.gif" /></div>
contact_mail.php
<?php
require('phpmailer/class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->Username = "kontakt@arhviz.rs";
$mail->Password = "*****";
$mail->Host = "mail.arhviz.rs";
$mail->Mailer = "smtp";
$mail->SetFrom($_POST["userEmail"], $_POST["userName"]);
$mail->AddReplyTo($_POST["userEmail"], $_POST["userName"]);
$mail->AddAddress("igor.kulundzic@gmail.com");
$mail->Subject = $_POST["subject"];
$mail->WordWrap = 80;
$mail->MsgHTML($_POST["content"]);
if(is_array($_FILES)) {
$mail->AddAttachment($_FILES['attachmentFile']['tmp_name'],$_FILES['attachmentFile']['name']);
}
$mail->IsHTML(true);
if(!$mail->Send()) {
echo "<p class='error'>Došlo je do greške pri slanju poruke. Molim, pokušajte kasnije ili pošaljite mail direktno na igor.kulundzic@gmail.com. Hvala!.</p>";
} else {
echo "<p class='success'>Poruka je uspešno poslata. Potrudiću se da Vam odgovorima u najkraćem roku. Hvala.</p>";
}
?>
phpmailer 文件夹中也有三个文件,但我认为它们只是用于连接服务器的配置文件。
我很确定这两行...
$mail->MsgHTML($_POST["userPhone"]);
$mail->MsgHTML($_POST["content"]);
...您首先将 phone 号码设置为邮件内容,然后用实际消息覆盖它。像这样尝试:
$mail->MsgHTML( 'Phone: ' . $_POST["userPhone"] . "\nMessage: " . $_POST["content"] );
至于重置表格:您似乎是通过 AJAX 请求发送电子邮件。您的 index.php 代码中已经有一个函数在成功发送电子邮件后运行:
success: function(data){
$("#mail-status").html(data);
$('#loader-icon').hide();
}
这就是您可以重置表单的地方,例如像这样:
success: function(data){
$("#mail-status").html(data);
$('#loader-icon').hide();
$('#frmContact').trigger("reset");
}
更新: 我试图让它更清楚,重置调用需要去哪里。如果它是成功函数的一部分,它应该只在发送邮件成功时发生。
更新 2: 第一步应该是检查文件限制的值是否如您所想。您可以输出如下值:
<?php
echo "<!-- upload_max_filesize=" . ini_get('upload_max_filesize') . ", post_max_size=" . ini_get('post_max_size') . "-->";
将其放在 index.php 文件的末尾,加载程序图标之后。然后刷新网站,看看页面的源代码。一旦值符合您的预期,请再次将其删除。
我正在使用 PHPPOT 网站上的“jQuery 使用 PHP 的附件联系表”,但我需要你的帮助来解决我所提到的问题。
首先,我想增加附件限制,现在是 2 MB。我要求我的 ISP 在 php.ini 中设置新参数,但他们说我的限制已经是 32 MB。不幸的是,当我尝试发送大于 2 MB 的文件时,我收到消息“无法访问文件:”并收到没有附件的邮件。
第二件事,我想在我的联系表中添加额外的“电话号码”,我已经按照逻辑完成了所有我得出的结论(只是说我是 PHP 菜鸟 :( )但我无法将此信息添加到我的电子邮件中。
还有最后一件事...如何在成功发送后强制重置表单?
非常感谢!!!
下面是 PHP 文件,你可以在这里看到我的表格:https://test.arhviz.rs/Test.html
index.php
<style>
body{width:100%;}
#frmContact {border-top:#F0F0F0 0px solid;background:rgba(250,248,248,0.00);padding:10px;}
#frmContact div{margin-bottom: 15px}
#frmContact div label{margin-left: 5px}
.demoInputBox{padding:10px; border:#27aae1 0px solid; border-radius:4px;background-color:#C6C6C6;width:100%;}
.error{background-color: #FF5A5A;border:#AA4502 0px solid;padding: 5px 10px;color: #FFFFFF;border-radius:4px;}
.success{background-color: #27AAE1;border:#0FA015 0px solid;padding: 5px 10px;color: #FFFFFF;border-radius:4px;}
.info{font-size:.8em;color: #FF5A5A;letter-spacing:2px;padding-left:5px;}
.btnAction{background-color:#27AAE1;border:0;padding:10px 40px;color:#FFF;border:#F0F0F0 0px solid; border-radius:4px;}
</style>
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function (e){
$("#frmContact").on('submit',(function(e){
e.preventDefault();
$('#loader-icon').show();
var valid;
valid = validateContact();
if(valid) {
$.ajax({
url: "contact_mail.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data){
$("#mail-status").html(data);
$('#loader-icon').hide();
},
error: function(){}
});
}
}));
function validateContact() {
var valid = true;
$(".demoInputBox").css('background-color','');
$(".info").html('');
if(!$("#userName").val()) {
$("#userName-info").html("(required)");
$("#userName").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#userEmail").val()) {
$("#userEmail-info").html("(required)");
$("#userEmail").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#userEmail").val().match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)) {
$("#userEmail-info").html("(invalid)");
$("#userEmail").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#userPhone").val().match(/[0-9]/)) {
$("#userPhone-info").html("(invalid)");
$("#userPhone").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#subject").val()) {
$("#subject-info").html("(required)");
$("#subject").css('background-color','#FF5A5A');
valid = false;
}
if(!$("#content").val()) {
$("#content-info").html("(required)");
$("#content").css('background-color','#FF5A5A');
valid = false;
}
return valid;
}
});
</script>
<form id="frmContact" action="" method="post">
<div id="mail-status"></div>
<div>
<label style="padding-top:20px;">Ime</label>
<span id="userName-info" class="info"></span><br/>
<input type="text" name="userName" id="userName" class="demoInputBox">
</div>
<div>
<label>E-mail</label>
<span id="userEmail-info" class="info"></span><br/>
<input type="text" name="userEmail" id="userEmail" class="demoInputBox">
</div>
<div>
<label>Telefon</label>
<span id="userPhone-info" class="info"></span><br/>
<input type="text" name="userPhone" id="userPhone" class="demoInputBox">
</div>
<div>
<label>Pošaljite Vaš projekat (DWG, DXF ili PDF):</label><br/>
<input type="file" name="attachmentFile" id="attachmentFile" class="demoInputBox">
</div>
<div>
<label>Tema</label>
<span id="subject-info" class="info"></span><br/>
<input type="text" name="subject" id="subject" class="demoInputBox">
</div>
<div>
<label>Poruka</label>
<span id="content-info" class="info"></span><br/>
<textarea name="content" id="content" class="demoInputBox" cols="60" rows="6"></textarea>
</div>
<div>
<input type="submit" value="Send" class="btnAction" />
</div>
</form>
<div id="loader-icon" style="display:none;"><img src="LoaderIcon.gif" /></div>
contact_mail.php
<?php
require('phpmailer/class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->Username = "kontakt@arhviz.rs";
$mail->Password = "*****";
$mail->Host = "mail.arhviz.rs";
$mail->Mailer = "smtp";
$mail->SetFrom($_POST["userEmail"], $_POST["userName"]);
$mail->AddReplyTo($_POST["userEmail"], $_POST["userName"]);
$mail->AddAddress("igor.kulundzic@gmail.com");
$mail->Subject = $_POST["subject"];
$mail->WordWrap = 80;
$mail->MsgHTML($_POST["content"]);
if(is_array($_FILES)) {
$mail->AddAttachment($_FILES['attachmentFile']['tmp_name'],$_FILES['attachmentFile']['name']);
}
$mail->IsHTML(true);
if(!$mail->Send()) {
echo "<p class='error'>Došlo je do greške pri slanju poruke. Molim, pokušajte kasnije ili pošaljite mail direktno na igor.kulundzic@gmail.com. Hvala!.</p>";
} else {
echo "<p class='success'>Poruka je uspešno poslata. Potrudiću se da Vam odgovorima u najkraćem roku. Hvala.</p>";
}
?>
phpmailer 文件夹中也有三个文件,但我认为它们只是用于连接服务器的配置文件。
我很确定这两行...
$mail->MsgHTML($_POST["userPhone"]);
$mail->MsgHTML($_POST["content"]);
...您首先将 phone 号码设置为邮件内容,然后用实际消息覆盖它。像这样尝试:
$mail->MsgHTML( 'Phone: ' . $_POST["userPhone"] . "\nMessage: " . $_POST["content"] );
至于重置表格:您似乎是通过 AJAX 请求发送电子邮件。您的 index.php 代码中已经有一个函数在成功发送电子邮件后运行:
success: function(data){
$("#mail-status").html(data);
$('#loader-icon').hide();
}
这就是您可以重置表单的地方,例如像这样:
success: function(data){
$("#mail-status").html(data);
$('#loader-icon').hide();
$('#frmContact').trigger("reset");
}
更新: 我试图让它更清楚,重置调用需要去哪里。如果它是成功函数的一部分,它应该只在发送邮件成功时发生。
更新 2: 第一步应该是检查文件限制的值是否如您所想。您可以输出如下值:
<?php
echo "<!-- upload_max_filesize=" . ini_get('upload_max_filesize') . ", post_max_size=" . ini_get('post_max_size') . "-->";
将其放在 index.php 文件的末尾,加载程序图标之后。然后刷新网站,看看页面的源代码。一旦值符合您的预期,请再次将其删除。