2010-07-12 36 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">