2016-06-27 94 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數據庫中。 –

相關問題