【问题标题】:Contact form give 405 when I send emails using amazon web server当我使用亚马逊网络服务器发送电子邮件时,联系表格给出 405
【发布时间】:2017-08-22 08:02:02
【问题描述】:

我创建了一个 html 联系表单并添加了 PHP 代码来帮助联系表单发送电子邮件。

我将我的索引和 PHP 文件添加到我的亚马逊网络服务器,但我得到了这个

错误 405 - 不允许用于访问此页面的 HTTP 谓词。您正在查找的页面无法显示,因为尝试访问的方法(HTTP 动词)无效。

当我点击提交按钮时。

我是否缺少一些基本的东西,我需要做一些配置吗?

下面是我的代码

<form action="mail_handler.php" method="post" name="form" class="form-box">
        <label for="name">Name</label><br>
        <input type="text" name="name" class="inp" placeholder="Enter Your Name" required><br>
        <label for="email">Email ID</label><br>
        <input type="email" name="email" class="inp" placeholder="Enter Your Email" required><br>
        <label for="phone">Phone</label><br>
        <input type="tel" name="phone" class="inp" placeholder="Enter Your Phone" required><br>
        <label for="message">Message</label><br>
        <textarea name="msg" class="msg-box" placeholder="Enter Your Message Here..." required></textarea><br>
        <input type="submit" name="submit" value="Send" class="sub-btn">
    </form>


<?php
if(isset($_POST['submit'])){
    $name=$_POST['name'];
    $email=$_POST['email'];
    $phone=$_POST['phone'];
    $msg=$_POST['msg'];

    $to='myEmailAddress@gmail.com';
    $subject='Form Submission';
    $message="Name :".$name."\n"."Phone :".$phone."\n"."Wrote the following :"."\n\n".$msg;
    $headers="From: ".$email;

    if(mail($to, $subject, $message, $headers)){
        echo "<h1>Sent Successfully! Thank you"." ".$name.", We will contact you shortly!</h1>";
    }
    else{
        echo "Something went wrong!";
    }
  }
?>

【问题讨论】:

  • action="mail_handler.php" 是否指向底部的代码块?还是指向不同的文件?
  • 这个脚本叫mail_handler.php ??
  • 是的,它指向您在那里看到的 php 代码。没有其他代码。这就是一切
  • 我正在搜索这个,我认为这是服务器问题。

标签: php html forms amazon-web-services email


【解决方案1】:

表单操作指向一个外部文件,而不是您的目标代码块。 :D

<form action="mail_handler.php" method="post" name="form" class="form-box">
// action tag refers to a file in current directory, not the php below

这意味着代码试图打开文件“mail_handler.php”,但它实际上并不存在!错误 405 类似于经典的 404,因为它表示缺少操作。

您很可能需要将&lt;?php?&gt; 标记中的所有内容移动到一个新文件中。

有关查看 PHP 表单操作的更多信息,我推荐this article,或者甚至可以查看Codecademy's PHP Course(免费)!

编辑

您可能对以下行有疑问。 if(mail($to, $subject, $message, $headers))

使用 if 语句意味着返回值始终是布尔值(真/假)。但是,根据mail()函数上的W3 School's article,它“返回地址参数的哈希值,失败时返回FALSE。”

如果这是您的问题的原因,您可能需要执行以下操作。

if(!mail($to, $subject, $message, $headers)){
    echo "Something went wrong!"; 
    // You know the only time its gone wrong is when it returns false.
}
else{
    echo "<h1>Success message!</h1>
    // If it returns anything other than false, then its a success
}

【讨论】:

  • php 代码位于一个名为 mail_handler.php 的单独文件中
  • 非常感谢!我会试试这个,让你知道它是否有效
  • 不,我更改了它,但我仍然收到错误 405 - 不允许用于访问此页面的 HTTP 动词。您正在查找的页面无法显示,因为尝试访问的方法(HTTP 动词)无效。
  • 你知道网上有什么像样的例子吗?有效的联系表格
  • 试试这个! freecontactform.com/email_form.php您是否检查过您的服务是否正常,是否出现异常?
猜你喜欢
  • 1970-01-01
  • 2016-09-27
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 2011-03-02
相关资源
最近更新 更多