Php HTML提交按钮返回';HTTP405';单击时出错
我目前正在通过VisualStudio在本地实时服务器上运行我的网站。 我希望我的HTML联系人表单(在index.HTML文件中编写)在单击HTML表单中的“提交”按钮时使用PHPMailer(在contact form handler.php中编写)发送邮件 当我点击按钮时,我会看到一个页面,上面写着 '此页面无法使用HTTP 405' 有人能给我解释一下为什么会发生这种情况,以及如何解决它吗 index.html:Php HTML提交按钮返回';HTTP405';单击时出错,php,html,phpmailer,Php,Html,Phpmailer,我目前正在通过VisualStudio在本地实时服务器上运行我的网站。 我希望我的HTML联系人表单(在index.HTML文件中编写)在单击HTML表单中的“提交”按钮时使用PHPMailer(在contact form handler.php中编写)发送邮件 当我点击按钮时,我会看到一个页面,上面写着 '此页面无法使用HTTP 405' 有人能给我解释一下为什么会发生这种情况,以及如何解决它吗 index.html: <form id="contact-form" method="po
<form id="contact-form" method="post" action="">
<label for="name">NAME</label>
<input id="name" type="text" name="name" required>
<label for="mob">MOBILE NUMBER</label>
<input id="mob" type="text" name="mob" required>
<label for="email">EMAIL</label>
<input id="email" type="email" name="email" required>
<label for="message">MESSAGE</label>
<textarea id="message" type="text" name="message" required></textarea>
<input class="submit-button" type="submit" value="Submit" name="submit"/>
</form>
<?php
if (isset($_POST['submit'])) {
require_once('PHPMailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->Host = 'smtp.gmail.com';
$mail->Port = '587';
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Username = 'myemailaddress@gmail.com';
$mail->Password = 'mypassword';
$mail->setFrom($_POST['email'], $_POST['name']);
$mail->addAddress= 'myemailaddress@gmail.com';
$mail->isHTML(true);
$mail->Subject = 'Test';
$mail->Body= '<h1> name:'.$_POST['name'].'<br> Email: '.$_POST['email'].'<br> Mobile: '.$_POST['mob'].'<br> message: '.$_POST['message'].'</h1>';
if(!$mail->send()){
$result="something went wrong. Please try again.";
}
else{
$result="Success!"
}
}
名称
手机号码
电子邮件
消息
联系表单处理程序。php:
<form id="contact-form" method="post" action="">
<label for="name">NAME</label>
<input id="name" type="text" name="name" required>
<label for="mob">MOBILE NUMBER</label>
<input id="mob" type="text" name="mob" required>
<label for="email">EMAIL</label>
<input id="email" type="email" name="email" required>
<label for="message">MESSAGE</label>
<textarea id="message" type="text" name="message" required></textarea>
<input class="submit-button" type="submit" value="Submit" name="submit"/>
</form>
<?php
if (isset($_POST['submit'])) {
require_once('PHPMailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->Host = 'smtp.gmail.com';
$mail->Port = '587';
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Username = 'myemailaddress@gmail.com';
$mail->Password = 'mypassword';
$mail->setFrom($_POST['email'], $_POST['name']);
$mail->addAddress= 'myemailaddress@gmail.com';
$mail->isHTML(true);
$mail->Subject = 'Test';
$mail->Body= '<h1> name:'.$_POST['name'].'<br> Email: '.$_POST['email'].'<br> Mobile: '.$_POST['mob'].'<br> message: '.$_POST['message'].'</h1>';
if(!$mail->send()){
$result="something went wrong. Please try again.";
}
else{
$result="Success!"
}
}
表示您已使用不受支持的方法请求资源,因此出于某种原因,您的web服务器不允许向您的端点发出POST请求。您可以尝试将表单标记更改为:
<form id="contact-form" method="get" action="">
这不是一个很好的解决方案-更好的方法是修复您的服务器配置以允许POST方法。我会在您的问题下进行评论,但我不能@RiggsFolly是正确的,您必须将php文件置于action
属性,因为表单必须将其发送到联系人form handler.php
。确保不要在index.html
中使用php代码,因为它不起作用。如果您在联系人表单处理程序.php
中添加问题代码,那就太好了,因为您的action=“”
属性为空,当您按下提交按钮时,您将再次运行此页面。那么,这个页面中的代码在哪里呢?如果我将其修改为:action=“contact form handler.php”,我将面临同样的问题。我将如何做呢?通过更改表单标记?至于改变你的网络服务器,我不能告诉你;您需要阅读文档并检查web服务器的配置,无论您在使用什么