问题描述
我一直致力于在我的个人网页上设置 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