尝试提交简单表单 php 原子时出现 HTTP 错误 405

Getting HTTP ERROR 405 when trying to submit simple form php atom

可能与谁有关,

我最近在学习 HTML、CSS、JS,现在也在学习 PHP。我在 Atom 工作并使用 atom-live-server 来观察我在做什么。我在 PHP 上学习了 W3schools 的课程,甚至当我复制他们的代码时,我在 Google Chrome 中收到错误(HTTP 错误 405)。在调查了一段时间后,我找不到解决方案。我已经向 atom 添加了一个 PHP-server 并设置了正确的路径。我将在下面附上相关代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Title</title>
    <link rel = "stylesheet" src = "stylesheet.css">
  </head>
  <body>
    <form action="passwords.php" method = "post">
      <input type = "text" name = "Username" placeholder = "Username" required>
      <input type = "password" name = "Password" placeholder="Password" required>
      <input type = "submit" value = "Submit">
    </form>
    <script src = "script.js"></script>
  </body>

和 php 文件:

<html>
<body>
  <? php echo $_POST["Username"]; ?>
  <? php echo $_POST["Password"]; ?>
</body>
</html>

我从来不知道 Atom 有 php 服务器,所以我试了一下...

但我必须事先声明我没有收到您的 http 405 错误。

我的文件设置 我将您的主文件设置为 index.php 并将您的 passwords.php 设置为原样。

在 ATOM 中,我右键单击 index.php 并选择“PHP Server Here”,这会启动带有 URL http://localhost:8000/index.php 的 Chrome 浏览器。 这样就显示了表单...然后填写并单击提交按钮,将我带到 http://localhost:8000/passwords.php

但是您还有另一个问题,因为您的 PHP 起始标签中有空格。

<? php 应该是 <?php

所以你的代码...

<html>
<body>
  <? php echo $_POST["Username"]; ?>
  <? php echo $_POST["Password"]; ?>
</body>
</html>

应该是

<html>
<body>
  <?php echo $_POST["Username"]; ?>
  <?php echo $_POST["Password"]; ?>
</body>
</html>

使用 <?php echo 的替代方法是 <?=

作为调试的旁白?

检测错误。 在您的主文件中,您可以使用。

<?php
// Enable FULL Error Reporting on the screen
// ONLY USE IN DEVELOPMENT
error_reporting(E_ALL);
ini_set('display_errors', 1);

注意: 似乎对 <? php 并不太在意,也不认为它是错误,因为它未被检测为有效 php代码。但它对所有其他 PHP 问题都有好处。

如果您在浏览器中查看 HTML 源代码,您会看到它正在输出...

HTML 来自浏览器的源代码

<html>
<body>
  <? php echo $_POST["Username"]; ?>
  <? php echo $_POST["Password"]; ?>
</body>
</html>

查看数组值

使用var_dump($_POST);print_r($_POST); 将显示数组的所有值,在本例中为全局$_POST 数组。这样您就可以在需要时看到发布的内容。

所以我刚刚弄清楚发生了什么。首先,我尝试安装 XAMPP 和 Apache 以及 mySQL 服务器(事实证明这不是解决方案,而且基本上没用)。但是当我启动这些服务器时,我发现为这些服务器保留的端口由于某种原因被阻止了(可能是 McAffee Livesafe)。这让我尝试在 Atom 中更改 built-in PHP-server 中的端口。我将它从 8000 更改为 8081。接下来,当我尝试将我的 PHP-server 设置为我的 index.php 文件时,Windows 提示我是否允许相关端口的 PHP-server .我显然做到了。在此之后,我在 passwords.php 中编写的 PHP-code 起作用了!

补充说明 对于遇到相同问题的 运行 的任何人:由于某些原因,Atom 中的 atom-live-server 无法与 PHP 文件一起正常运行。如果你使用任何 PHP 文件,启动这样的服务器是没有用的,因为你会得到和我一样的错误。所以归结为刷新页面。

感谢所有试图帮助我解决问题的人!尽管它可能没有给我带来最终的解决方案,但它仍然帮助了我很多。