【问题标题】:404 error - The requested URL/< was not found on this server. why?404 错误 - 在此服务器上找不到请求的 URL/<。为什么?
【发布时间】:2023-04-08 12:58:01
【问题描述】:

我刚刚在新安装的 MacOS El Capitan 上完成了 AMP 的设置。我不知道为什么,但每次我尝试通过一些 PHP 处理运行一个简单的 HTML 表单时,我都会收到 404 错误。我已经尝试过使用默认的 MacOS 文档根目录,我也尝试过使用用户级文档根目录,我什至安装了 MAMP 作为最后的手段。在所有这些设置中,当我点击提交按钮时,结果总是相同的:404。

<?php if(isset($_POST['submit'])) { 
$name = $_POST['name'];
$post = $_POST['post'];
$link = $_POST['link']; 
echo $name; 
echo $post; 
echo $link; 
echo "all good";
} 
?>

<form name="upload" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
   Name:<br>
   <input type="text" name="name"><br>
   Post:<br>
   <input type="text" name="post"><br>
   Link:<br>
   <input type="text" name="link"><br>
   <input type="submit" name="submit" value="Submit Form"><br>
</form>

错误是“在此服务器上找不到请求的 URL/

我错过了什么??

非常感谢您的帮助!

【问题讨论】:

  • 您检查过生成的 html 表单吗?看来行动的价值是&lt;。您是否验证过 php 正在解析您的脚本? &lt;?php die('Hello world'); ?&gt;
  • 我没有看到任何问题,我可以从表单中获取输出。你在本地尝试吗?
  • 是的,我正在本地尝试。我可以在 Aron 的回复中使用 die 命令运行一个 php 文件,没有任何问题,但是如果我将相同的 die 命令插入到上面的 php 代码中(并删除该 if 子句中的所有其他代码行),我会收到 404 错误!

标签: php html forms


【解决方案1】:

您的表单的操作似乎没有正确解析。您的代码在我的服务器上运行良好 - 但是,每台服务器都不同。 您可以尝试在 php 部分中移动双引号,看看这是否会以某种方式使解析器出错:

改变

 <form name="upload" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">

<form name="upload" action=<?php echo "\"".htmlspecialchars($_SERVER['PHP_SELF'])."\""; ?> method="post">

或者

<form name="upload" action=<?php echo "'".htmlspecialchars($_SERVER['PHP_SELF'])."'"; ?> method="post">

理论上,所有这些都应该产生相同的结果 - 但值得一试。

【讨论】:

  • 你服务器上表单的 html 是什么,特别是 action 属性是什么?
  • 我现在用“die('Hello world');”使它尽可能简单。结果仍然是404。我的真实脚本将在SQL数据库中的文本框中插入的文本。
  • 它是否与 action="" (即空白操作属性)一起使用 - 通常将表单发送回同一脚本?
  • 使用 action="" 我没有收到 404,它会重新加载表单
  • 感觉php没有被正确处理。试试在网络服务器上试试?
猜你喜欢
  • 2017-10-31
  • 1970-01-01
  • 2014-09-27
  • 2017-01-25
  • 2014-03-26
  • 2014-11-19
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
相关资源
最近更新 更多