PHP 电子邮件表单问题:无法发布

问题描述

我一直致力于在我的个人网页上设置 PHP 电子邮件表单,但遇到了一个问题,即当我点击提交时,页面显示 "Cannot post /mail.php"

我之前在这个网站上看到过几个类似的问题,但我没有找到任何解决问题的方法。我是 PHP 新手,所以我不确定错误有多深,或者我是否可能遗漏了一些明显的东西。

我在 Mac OS Big Sur 上使用 Brackets Live Preview

我尝试过的事情:

  • 确保 mail.php 文件与我的 HTML 文件在同一目录中
  • 确保我在 HTML 文件中设置了 name 属性,以便 PHP 可以获取相关输入的信息
  • 使用 GET 切换 POST(POST 错误,GET 下载 PHP 文件而不是运行它)
  • 使用 Homebrew 下载 PHP
  • 重新下载的括号

作为参考,这是我的代码: HTML 文件:



       <form action="mail.php" method="post">
            <p>Name</p> <input type="text" name="name">
            <p>Email</p> <input type="text" name="email">
            <p>Message</p><textarea name="message" rows="6" cols="40"></textarea><br>
            <input type="submit" value="Send"><input type="reset" value="Clear">
        </form> 

PHP 文件:

<?php
          $name = $_POST['name'];
          $email = $_POST['email'];
          $message = $_POST['message'];
          $formcontent="From $name \n Message: $message";
          $recipient = "email.redacted@gmail.com";
          $subject = "Contact Form";
          $mailheader = "From $email \r\n";
          mail($recipient,$subject,$formcontent,$mailheader) or die("Error");
?>

如果您能深入了解可能出现的问题或需要采取的一些调试步骤,我们将不胜感激!

解决方法

这里 <? php? 后面有空格。删除它,看看会发生什么。

它应该是 <?php 是有效的语法。否则脚本会中断。

编辑:我并不是说这会解决您代码中的任何逻辑错误,但其中的空间使脚本甚至不是 PHP。

,

您的表格是否有method="get"。要使用 $_POST 访问信息,您需要将其更改为 method="post"

   <form action="/mail.php" method="post">
        <p>Name</p> <input type="text" name="name">
        <p>Email</p> <input type="text" name="email">
        <p>Message</p><textarea name="message" rows="6" cols="40"></textarea><br>
        <input type="submit" value="Send"><input type="reset" value="Clear">
    </form>

关于为什么您的 Bracket Live Preview 下载 PHP 文件而不是运行它。听起来您的 Bracket Live Preview 配置不正确。

你或许可以从这个问题中得到一些帮助。 Using Brackets for PHP files

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...