2014-05-10 68 views
-1

有人能解釋一下這兩個語句之間的區別PHP的作用不同:與「回聲」

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

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

我沒有看到行爲上的差異。

+2

如果您如果沒有迴應,表單會被髮布到同一頁面,因爲沒有定義動作,所以你可以將動作屬性留空或者根本不要聲明... –

+0

@Mr。外國人。我不明白你的回覆。請澄清你的意思是「沒有定義行動」。 – user3236820

+0

在第一種情況下,輸出將是'action =「」'在第二個'action =「path/on/server」'中。回聲將顯示價值,沒有回聲它贏得了輸出 – MSadura

回答

2

區別很簡單。

如果代碼不打印任何東西,則第一件。

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

所以action參數是空的,並且默認瀏覽​​器表單提交給同一個網站,有什麼可能會是相同的值htmlspecialchars($_SERVER['PHP_SELF']);回報。

如果您使用第二段代碼,htmlspecialchars($_SERVER['PHP_SELF']);的回報將被迴應,並且瀏覽器將表單提交到同一站點,如上所述。

如果您的網站被稱爲form.php。代碼的第一件會產生:

<form method="post" action=""> 

瀏覽器看到的動作是空的,表單數據發送到該網站,form.php

而第二段會產生:

<form method="post" action="form.php"> 
+0

你能解釋爲什麼第一個返回action =「」? htmlspecialchars的返回是一個字符串。所以它應該是action =「」。在第二種情況下將不會它導致行動=「回聲」。也許我不明白的行動並用htmlspecialchars(

) – user3236820

+0

的htmlspecialchars返回一個字符串的組合,但你需要一個funtction寫這個返回值了(如回聲)。 PHP函數的返回不會自動寫出。另一個例子:嘗試做一個簡單的計算,你會看到結果不會顯示,直到你使用回聲。 – idmean

+0

謝謝你解釋它。 – user3236820

2

第一個例子會輸出,因爲htmlspecialchars不輸出任何東西,它只是返回處理後的內容。

<form method="post" action=""> 

這將簡單地提交表單到當前頁面。

第二個例子將輸出類似

<form method="post" action="page.php"> 

哪裏page.php是當前腳本(見here)。

由於空白操作會將表單提交到當前頁面,並且使用您的echo語句將打印出一條到當前頁面的路徑,則兩者會導致相同的結果。