2011-05-22 101 views
0

我有一個調用PHP IE6的HTML代碼的HTML相對路徑,問題是當我使用相對路徑,它只是打開PHP文件,但是當我使用絕對路徑,則執行PHP代碼。 html和php都在同一個目錄中,並且apache正在運行。不工作PHP

下面一個工作:

<form action="http://localhost/welcome.php" method="POST"> 
Name: <input type="text" name="fname" /> 
Age: <input type="text" name="age" /> 
</form> 

不工作:

<form action="welcome.php" method="POST"> 
Name: <input type="text" name="fname" /> 
Age: <input type="text" name="age" /> 

PHP代碼:

<html> 
<body> 
Welcome <?php echo $_POST["fname"]; ?>!<br /> 
</body></html> 
+0

其實在這兩種情況下,我雙擊html文件。絕對路徑文件工作正常,它打開http://localhost/welcome.php,但在第二種情況下,它只是打開c:/xampp/htdocs/welcome.php。我不知道這裏有什麼問題嗎?我需要在conf文件中添加.html設置嗎? – user757621 2011-05-22 07:15:26

+1

@John這是一個答案;你應該做到這一點。 – Jordan 2011-05-22 07:15:39

+0

@Jordon謝謝。我做了,並添加了一些顏色,使其可以理解。 – 2011-05-22 07:27:02

回答

1

讓與形式的文件是:C:\ XAMPP \ htdocs中\ form.html

如果你是在資源管理器中導航並單擊該文件,該文件中的任何鏈接都將默認爲文件協議,而不是http。意思是說,瀏覽器將去到位置並打開文件,並在沒有服務器的情況下解析它自己。

必須導航到localhost/form.html,比它會奏效。

+0

我不明白爲什麼它可以使用絕對路徑,而不是相對路徑。 – user757621 2011-05-22 07:17:09

+1

究竟是什麼你在瀏覽器中打開,以打開與窗體的文件? – r0nny1l 2011-05-22 07:18:22

5

我預計,在第二種情況,你實際上從文件中運行它:///協議。這意味着它沒有通過你的服務器。

你不應該在你的資源管理器中雙擊文件,因爲這將只是通過文件系統打開它。你的PHP都不會以這種方式工作。


對於完整的URL,您實際上是向服務器發出請求。您將從您所在的任何文件/協議導航至指定位置:http://localhost/welcome.php

具有相對URL,你從你的根目錄開始(文件:/// C:/ XAMPP/htdocs中/)和相對導航到的welcome.php。這會使您的最終URL文件:/// c:/xampp/htdocs/welcome.php。由於第二個不是由服務器渲染的......你不會得到任何有用的東西。

這是否意味着你不應該使用相對路徑?一點都不。這意味着你應該從你的http服務器開始。設置一個書籤。 :)

+0

我在這裏爲你增加了一些清晰度。 – 2011-05-22 07:24:30

+0

得到了答案,如果使用http://localhost/wel_input.hml,它可以採取相對路徑。非常感謝約翰,上帝保佑你! – user757621 2011-05-22 07:34:55