2014-10-22 88 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