【问题标题】:PHP Email Form Issue: Cannot POSTPHP 电子邮件表单问题:无法发布
【发布时间】:2021-04-03 18:46:15
【问题描述】:

我一直在努力在我的个人网页上设置一个 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");
?>

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

【问题讨论】:

  • Made sure that the mail.php file is in the same directory as my HTML files .... 但是/mail.php 中的/ 进入基本路径,不是当前路径。删除它,看看会发生什么。
  • 我也删除了同样的问题,但感谢您的更正!
  • 我不确定是否相关的其他信息,但预览基本上在我的 localhost (127.0.0.1) 上运行 HTML/CSS
  • 您能否使用此预览版运行任何 PHP?所以如果你刚刚做了echo "Hello World";,它会出现吗?
  • 如果我回显“Hello World”,也会出现同样的错误。我尝试在浏览器中而不是在预览中运行 HTML 文件,当我单击提交时,它只显示 php 文件的文本(如代码)

标签: php html css forms brackets


【解决方案1】:

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

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

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

【讨论】:

  • 我不知道该空间是如何包含在问题中的,但它是
  • @AeroFighter76 这是您第二次说您的编辑器中的某些内容与您的问题代码不同。你不是简单地从编辑器复制粘贴到这里吗?
  • 在调试过程中改变了一些东西,所以我将早期版本复制到了一个 word doc 中,我相信我将它复制到这里而不是我的编辑器中;/ def 是我的一个错误,但我没有不认为此时与我的编辑器版本有任何差异。我已将问题代码更新为编辑器,以确保
  • 那么它可能是Brackets Live Preview 问题。当服务器直接在浏览器中提供服务时,您的错误是不可重现的,是吗?例如。 localhost/path_to_app/?
  • 是的,当直接在浏览器上运行时,这是一个不同的问题(只是代码出现而不是运行),但我没有遇到 POST 问题
【解决方案2】:

您的表格是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 文件而不是运行它。听起来您的括号实时预览配置不正确。

您也许可以从这个问题中获得一些帮助。 Using Brackets for PHP files

【讨论】:

  • 我的错,我已经在我的编辑器中发布了,但是进入了上面的代码。我会解决的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
相关资源
最近更新 更多