【发布时间】:2022-01-11 17:38:54
【问题描述】:
我正在构建一个需要将填写的数据发送到电子邮件的表单。我正在使用 HTML 和 PHP。但不幸的是,当我按下提交按钮时出现以下错误。
405 - 不允许用于访问此页面的 HTTP 动词。 您正在查找的页面无法显示,因为尝试访问的方法(HTTP 动词)无效
PHP 代码是:
<?php
if (isset($_POST['submit'])) {
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];
$email_subject = "NEW MESSAGE VIA CONTACT FORM";
$email_body = "You have received a new message from the user ".$name. ".\n".$message;
$to = "info@house.gr"
$headers = "From: ".$visitor_email;
mail($to, $email_subject, $email_body, $headers);
header("Location: index.html?mailsend");
}
?>
HTML 表单是:
<form method="POST" class="contact-form" actions="contactform.php">
<input type="text" name="name" placeholder="Full Name">
<input type="text" name="mobile" placeholder="Your Mobile Phone">
<input type="text" name="email" placeholder="Your E-mail">
<textarea class="materialize-textarea" name="message" placeholder="Your Message"></textarea>
<input type="submit" value="Submit" class="btn">
</form>
更新: 对代码进行此编辑:action="contactform.php",我没有收到错误消息,但未发送电子邮件
最终解决方案: 将php文件更改为:
$headers = "From: ";
$headers .= $visitor_email;
mail($to, $email_subject, $email_body, $headers);
header('Location: ../');
我通过网络服务器中的日志文件发现了问题
【问题讨论】:
-
通常,405 错误意味着您正在向不知道如何处理该请求类型的端点发送请求。确保您指向正确的端点,并且它已设置为处理 POST 请求。
-
@TheHeadRush 我如何检查这个?我遵循了许多教程,他们做了同样的事情
-
不知道。我已经有 20 年没有使用 PHP 了。大概您有一个映射到
Location: index.html?mailsend请求的控制器方法。如果是这样,请检查它是否处理 POST 请求。如果没有,请制作一个处理程序。 -
您在使用 IIS 吗?对特定错误消息详细信息的快速搜索显示您可能需要 disable WebDAV 或者可能只允许 POST 到该文件类型。
-
@ChrisHaas 我直接通过服务器运行,所以我不确定 WebDAV 是否可以调整
标签: javascript php html web