2016-06-27 68 views
0

我刚刚完成了安装新的MacOS El Capitan安装的AMP。我不知道为什么,但每次我尝试运行一个简单的HTML表单时,都会遇到一个404错误。我已经用默认的MacOS文档根尝试过了,我也尝试过使用用户级的文档根目录,甚至还安装了MAMP作为最后一招。在所有这些设置的结果总是相同的,当我点击提交按钮:404404错误 - 请求的URL/<在此服务器上未找到。为什么?

<?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/<在此服务器上找到。”的错误

我在想什么?

非常感谢您的帮助!

+0

您是否检查了表单生成的html?看来行动的价值是'<'。你有没有证实php是解析你的脚本? '<?php die('Hello world'); ?> –

+0

我没有看到任何问题,我可以从窗体中获得输出。你在本地尝试吗? – RasmusGlenvig

+0

是的,我在本地尝试。我可以在Aron的回复中使用die命令运行一个php文件,但是如果我在上面的php代码中插入相同的die命令(并删除if语句中的所有其他代码行),我会得到404错误! –

回答

0

看起来您的表单的行为无法正确解析。你的代码在我的服务器上运行良好 - 但是,每个服务器都不相同。 你可以尝试移动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"> 

从理论上讲,所有这些都应该导致同样的事情 - 但它是窝试试看。

+0

你好,我得到了两个替代方案相同的404 ... –

+0

什么是您的服务器上的表格的HTML,具体是什么动作属性变成? –

+0

我现在已经尽可能简单地用“die('Hello world');”结果仍然是404. 我的真实脚本将文本框中引入的文本插入到SQL数据库中。 –

相关问题