AJAX (Asynchronous JavaScript and XML) 是一种在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的技术。PHP是一种服务器端脚本语言,常用于处理表单数据和发送电子邮件。
<!DOCTYPE html>
<html>
<head>
<title>联系我们</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<h1>联系我们</h1>
<form id="contactForm">
<div>
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="subject">主题:</label>
<input type="text" id="subject" name="subject" required>
</div>
<div>
<label for="message">消息:</label>
<textarea id="message" name="message" required></textarea>
</div>
<button type="submit">发送</button>
</form>
<div id="response"></div>
<script>
$(document).ready(function() {
$('#contactForm').submit(function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: 'process_form.php',
data: $(this).serialize(),
success: function(response) {
$('#response').html(response);
$('#contactForm')[0].reset();
},
error: function() {
$('#response').html('发送失败,请稍后再试。');
}
});
});
});
</script>
</body>
</html>
<?php
header('Content-Type: text/html; charset=utf-8');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 获取表单数据
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$subject = filter_input(INPUT_POST, 'subject', FILTER_SANITIZE_STRING);
$message = filter_input(INPUT_POST, 'message', FILTER_SANITIZE_STRING);
// 验证数据
$errors = [];
if (empty($name)) $errors[] = '姓名不能为空';
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $errors[] = '邮箱格式不正确';
if (empty($subject)) $errors[] = '主题不能为空';
if (empty($message)) $errors[] = '消息内容不能为空';
if (!empty($errors)) {
echo '<div class="error">' . implode('<br>', $errors) . '</div>';
exit;
}
// 设置邮件参数
$to = 'your-email@example.com'; // 替换为你的邮箱
$headers = "From: $email\r\n";
$headers .= "Reply-To: $email\r\n";
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
$email_body = "您收到来自网站联系表单的新消息:\n\n";
$email_body .= "姓名: $name\n";
$email_body .= "邮箱: $email\n";
$email_body .= "主题: $subject\n";
$email_body .= "消息:\n$message\n";
// 发送邮件
if (mail($to, $subject, $email_body, $headers)) {
echo '<div class="success">感谢您的留言,我们会尽快回复您!</div>';
} else {
echo '<div class="error">发送邮件时出错,请稍后再试。</div>';
}
} else {
echo '<div class="error">无效的请求方法。</div>';
}
?>
原因:
解决方案:
原因:
解决方案:
原因:
解决方案:
解决方案:
这个实现展示了如何使用AJAX和PHP创建一个现代化的联系人表单,既能提供良好的用户体验,又能确保数据安全可靠地传输到目标邮箱。
没有搜到相关的文章