HTML 表单提交路径错误:正确设置 action 属性指向 PHP 文件

表单提交失败是因为 `action` 路径未正确指向同目录下的 `addmessage.php`,实际文件位于 `guestbook/` 子目录中,而表单使用了相对路径 `addmessage.php`,导致浏览器尝试访问根目录下的该文件,引发 404 错误。

在你当前的项目结构中:

guestbook/       ← 这是一个子目录
├── addMessage.php
├── guestbook.php
...
index.php         ← 项目入口(位于根目录)

虽然你在 index.php 中通过 正确包含了 guestbook.php,但HTML 表单的 action 属性是前端行为,由浏览器解析并发起 HTTP 请求,与 PHP 的 include 路径无关。也就是说:

  • guestbook.php 被包含进 index.php 后,其 HTML 内容会直接渲染到 index.php 的响应中;
  • 表单
    中的 addMessage.php 是相对于当前页面 URL 的路径(即 http://localhost/index.php),浏览器会尝试请求 http://localhost/addMessage.php —— 但该文件实际位于 http://localhost/guestbook/addMessage.php。

✅ 正确做法是:将 action 改为相对于网站根目录(root)的路径,或相对于当前脚本所在目录的显式路径

推荐使用根路径写法(以 / 开头),更清晰、不易出错:

⚠️ 注意事项:

  • 不要写成 action="guestbook/addMessage.php"(这是相对于当前 URL 路径,若用户通过 http://localhost/subdir/index.php 访问,会错误解析为 /subdir/guestbook/addMessage.php);
  • 更安全的方式是用 PHP 动态生成路径,确保一致性(尤其在部署到子目录时):

但鉴于你的 guestbook.php 总是被包含在 index.php 中,且 addMessage.php 固定位于 guestbook/ 目录下,最简洁可靠的方案仍是:

此外,请确保:

  • addMessage.php 文件确实存在于 ./guestbook/addMessage.php(注意大小写、扩展名及隐藏字符);
  • Web 服务器(如 Apache)已启用 .php 解析,并允许执行该目录下的脚本;
  • 浏览器开发者工具的「Network」标签中检查实际发出的请求 URL 和状态码,辅助定位路径问题。

最后,为增强健壮性,建议在 addMessage.php 中添加基础防护和调试输出:

这样既验证了路径修复成功,也提升了代码安全性与可维护性。