2013-08-07 82 views
3

我有問題,我想回應這是HTML標籤的字符串,所以我不知道怎麼說,但是這是我的代碼回聲HTML標記到PHP輸入值

echo '<input type="hidden" name="id" value='.($row['id']).'>'; 

其中值$ row ['id']是'<b>test</b>',問題在於echo的輸出,關閉標籤<b>會關閉輸入標籤,所以輸入值只有'<b' 謝謝。通過htmlspecialchars

+0

通過htmlentities函數運行它。 – MightyPork

+0

你只是錯過了一組雙引號的值.. – naththedeveloper

回答

5

htmlentities($row['id'],ENT_QUOTES)這將編碼<>&lt;&gt;

$str = "A 'quote' is <b>bold</b>"; 


echo htmlentities($str); 
// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt; 

echo htmlentities($str, ENT_QUOTES); 
// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt; 

以上兩者都是正確的,第二個更安全。

3
  1. 將數據傳遞給使其安全用於插入HTML屬性(由具有特殊意義的實體轉換字符)。
  2. 報價單的屬性值(你的代碼沒有"繞輸出行ID),這樣的空間,=等將被視爲值

這樣的一部分:

echo '<input type="hidden" name="id" value="'. htmlspecialchars($row['id']) . '">'; 

或者更好,但不要在PHP模式的標記不輸出塊,切換到直接輸出模式,直到你需要一個變量/函數調用:

<input type="hidden" name="id" value="<?php echo htmlspecialchars($row['id']); ?>"> 
1

你只需要正確逃生:

echo '<input type="hidden" name="id" value="'.($row['id']).'">'; 
+1

我會用'''而不是'\''因爲其他屬性是用雙引號。 – Mash

+1

好點,並且修改。 – crowebird

2

使用htmlspecialchars您的迴音語句中,就像這樣:

echo '<input type="hidden" name="id" value="' . htmlspecialchars($row['id']) . '">'; 

還添加引號爲value值。

+1

使用什麼?一個遊戲的點差 - 答案應該解釋他們在做什麼 – Quentin

+0

這是非常明顯的變化,無論如何,我已經編輯它,使其變得清晰 –

+0

您還添加了價值屬性值周圍的引號這些並不明顯,引號很容易遺漏。 – Quentin