尝试提交简单表单 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 文件,启动这样的服务器是没有用的,因为你会得到和我一样的错误。所以归结为刷新页面。
感谢所有试图帮助我解决问题的人!尽管它可能没有给我带来最终的解决方案,但它仍然帮助了我很多。
可能与谁有关,
我最近在学习 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 文件,启动这样的服务器是没有用的,因为你会得到和我一样的错误。所以归结为刷新页面。
感谢所有试图帮助我解决问题的人!尽管它可能没有给我带来最终的解决方案,但它仍然帮助了我很多。