2010-07-12 126 views
1

我從MySQL數據庫中選擇數據,並執行以下操作進行urlencode/urldecode問題

echo "<input type=\"text\" name=\"distadd1\" id=\"distadd1\" class=\"textbox\" value=". urlencode($row['ADD1']). " >"; 

但是如下+規劃+%26 +開發部+正在顯示的值。

我如何刪除+和%26

+0

你爲什麼要在首位對urlencoding進行編碼? – 2010-07-12 10:54:03

+0

我想阻止XSS /腳本注入 – Tommy 2010-07-12 10:55:10

+0

我想將字符串'Add1'放入表單輸入框中, 如果我只是說$ row ['ADD1'] 我得到字符串的第一個單詞,在這個case Department 但我發現通過使用urlencode我顯示整個字符串,但與空間字符。 我是PHP新手,可能會嘗試做這個錯誤。 – Scott 2010-07-12 11:04:55

回答

2

URL編碼是不是你想要做這聽起來像什麼不同。嘗試改變URL編碼爲htmlentities,這將擺脫'+'和& 26;但仍會保護您免受XSS /腳本注入您的網頁。

Example #1 A htmlentities() example 
<?php 
$str = "A 'quote' is <b>bold</b>"; 

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

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

PHP Manual

+0

我試過htmlentities,但它只是返回字符串的第一個單詞。 – Scott 2010-07-12 11:13:04

+0

什麼是您的實際HTML輸出(不是通過瀏覽器呈現的內容)? – Tommy 2010-07-12 12:16:04

+0

您對htmlentities的引用可幫助我找到問題所在。 它只是value =「。」\「」。 $ row ['ADD1']。「\」「。​​」>「; ie ie用雙引號包圍變量。 – Scott 2010-07-12 12:21:11

0

不要擺在首位添加這些符號。顧名思義,urlencode()函數用於生成URL。你可能想要使用htmlspecialchars()。

我試過htmlentities,但它只是 返回字符串的第一個單詞。

您的HTML無效。您需要使用引號,以便您的屬性可以包含空格。比較:

<input name=user value=foo bar id=foo> 
<input name="user" value="foo bar" id="foo">