2014-10-22 48 views
0

UPDATE误导 - ヶ辆不起作用

(我可能只是删除了这个问题 - 但我还不如把它作为一个提醒大家的是,有时错误比我们看别的地方... )

我非常抱歉,我让你思考这个问题:“实际结果”的原因是在一个完全不同的位置,并且与htmlentities无关。

感谢大家谁试图帮助。


为什么此代码不能在我的PHP 5.4.32网站中工作?

代码:

$returnValue = htmlentities(urldecode('//echo \'<textarea name="comments" id="comments">$theData</textarea>\';'), ENT_QUOTES, 'UTF-8'); 
echo '<textarea>' . $returnValue . '</textarea>'; 

预期结果:

以实际字符串一个textarea

//echo '<textarea name="comments" id="comments">$theData</textarea>'; 

实际结果:

一个textare一个以实际字符串

//echo '<textarea name="comments" id="comments">$theData 

(以下简称“”在原来的字符串实际上关闭HTML文本区域。)

以同样的方式,脚本可以被注入(这就是为什么我最初使用的原因ヶ辆)。

非常奇怪的事情:

如果我只是在上面的示例代码添加到我的PHP文件的开头,它按预期工作。所以一定有一些原因,为什么它不能在页面上进一步工作。我不知道代码中没有可能的原因。

怎么了?

btw:使用htmlspecialchars不会改变效果。

回答

0

没有什么不对的代码。完美工作 - 错误是在我的PHP文件中的其他地方...

3

美元符号$未被解释为单引号。

选择和使用其中的一个:

echo '<textarea name="comments" id="comments">' . $theData . '</textarea>'; 
echo "<textarea name='comments' id='comments'>$theData</textarea>"; 
echo "<textarea name='comments' id='comments'>" . $theData . "</textarea>"; 
echo "<textarea name=\"comments\" id=\"comments\">$theData</textarea>"; 
+0

这是一个误解。 '// echo'';'是应该在外部textarea块内显示的文本字符串。 – 2014-10-22 06:37:35

2

在这种情况下,你不应该使用urldecode()urldecode()将为您提供url编码字符串的原始值(在PHP中,返回值为urlencode())。您在这里不使用网址编码的字符串。

下应该给您预期的结果:

$returnValue = htmlentities('//echo \'<textarea name="comments" id="comments">$theData</textarea>\';', ENT_QUOTES, 'UTF-8'); 
echo '<textarea>' . $returnValue . '</textarea>'; 
+0

对不起,这并没有改变任何东西。 – 2014-10-22 07:02:34