gpt4 book ai didi

javascript - 我使用 PHP 和 JavaScript 的第一个联系表单 - 无页面重定向

转载 作者:搜寻专家 更新时间:2023-10-31 21:48:20 24 4
gpt4 key购买 nike

编写我的第一个使用联系表的网站。到目前为止,在我自己研究这个问题时,我发现了我一直关注的以下文章:

http://www.nfriedly.com/techblog/2009/11/how-to-build-a-spam-free-contact-forms-without-captchas/

然而,到目前为止,它还没有奏效。我已将联系页面上传到其上装有 PHP 的共享托管服务器。以下是我目前的代码。

这里是*.html文件中的相关内容到表单:

<form action="/submit.php" method="post">
<span>Name</span>
<br>
<input id="name-text" type="text" name="name">
<br>
<span>Email</span>
<br>
<input id="email-text" type="text" name="email">
<br>
<span>Subject</span>
<br>
<input id="subject-text" type="text" name="subject">
<br>
<input id="antispam-text" type="text" name="url" style="display:none;">
<span>Message</span>
<br>
<textarea id="message-text" name="message"></textarea>
<br>
<div class="form-submit">
<input id="submit-button" class="menu" type="submit" value="Submit">
</div>
<br>
<div class="form-submit">
<span id="sent-status"></span>
</div>
</form>

这里是*.css文件中的相关内容到表单:

input[type="text"], textarea {
width: 90%;
margin: 10px;
font-size: var(--font-text4);
}
textarea {
height: 90px;
}
#submit-button:hover {
border-color: #7AC943;
}
.form-submit {
text-align: center;
margin:-20px;
}
#submit-button {
background-color: transparent;
width: 150px;
border: var(--thin-border);
color: var(--font-color);
font-size: var(--font-text3);
}
#sent-status {
margin: -10px;
padding: 7px;
visibility: hidden;
background-color: #000000;
}

下面是*.js文件中的相关内容到表单:

document.getElementById('submit-button').addEventListener('click', function () {
var formFilled = true;
if (document.getElementById('name-text').value == '')
formFilled = false;
if (document.getElementById('email-text').value == '')
formFilled = false;
if (document.getElementById('subject-text').value == '')
formFilled = false;
if (document.getElementById('message-text').value == '')
formFilled = false;
document.getElementById('sent-status').style.visibility = 'visible';
if (formFilled) {
document.getElementById('sent-status').style.color = '#7AC943';
document.getElementById('sent-status').innerText = 'Message Sent Successfully';
}
else {
document.getElementById('sent-status').style.color = '#FF1D25';
document.getElementById('sent-status').innerText = 'Contact Form Incomplete';
}
});

这是 submit.php 文件的全部内容:

<?php
// If the URL field is empty...
if(isset($_POST['url']) && $_POST['url'] == ''){
// then send the form to your email.
mail('beta@email.com', 'Contact Form', print_r($_POST,true) );
}
// Else, let the spammer think that they got their message through.
?>

以下是影响此联系表的技术问题:

  1. 填写表单的所有字段并单击“提交”按钮,然后浏览器转到 submit.php 文件并离开 *.html 文件。我希望浏览器始终停留在 *.html 文件上,永远不会像加载网页一样加载 submit.php 文件。

  2. 单击“提交”按钮,然后检查我指定的目标电子邮件帐户,收件箱中没有任何内容,也没有垃圾邮件。电子邮件帐户可以正常发送/接收电子邮件。在 submit.php 代码中,您会看到我输入了 beta@email.com,这不是实际的目标电子邮件。对于这篇文章,我将我的实际电子邮件目标地址保密。

非常感谢您的帮助。

最佳答案

您可以使用 Fetch API,首先阻止提交按钮的默认操作,然后使用 fetch 发送表单信息,如下所示:

document.getElementById('submit-button').addEventListener('click', function (event) {
event.preventDefault();

var formFilled = true;
if (document.getElementById('name-text').value == '')
formFilled = false;
if (document.getElementById('email-text').value == '')
formFilled = false;
if (document.getElementById('subject-text').value == '')
formFilled = false;
if (document.getElementById('message-text').value == '')
formFilled = false;
document.getElementById('sent-status').style.visibility = 'visible';
if (formFilled) {
const form = document.querySelector('form');
const data = new FormData(form);

fetch('/submit.php', {
body: data,
cache: 'no-cache',
method: 'POST',
mode: 'cors'
})
.then(res => res.text())
.then(result => {
if (result === 'ok') {
document.getElementById('sent-status').style.color = '#7AC943';
document.getElementById('sent-status').innerText = 'Message Sent Successfully';
} else {
//failed message here ...
}
});
} else {
document.getElementById('sent-status').style.color = '#FF1D25';
document.getElementById('sent-status').innerText = 'Contact Form Incomplete';
}
});

并对 submit.php 文件进行以下更改:

<?php
if(isset($_POST['url']) && $_POST['url'] == ''){
extract($_POST);
mail('beta@email.com', 'Contact Form', $message);

echo 'ok';
}

mail函数,第三个参数应该是消息,从 $_POST 数组中提取消息并将其提供给邮件函数

关于javascript - 我使用 PHP 和 JavaScript 的第一个联系表单 - 无页面重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50541977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com