看板 PHP 關於我們 聯絡資訊
想請問各位一下 之前看到某個網站的寫法 我知道htmlentities()是可以過濾掉使用者輸入html語法,或者是script等等 不過之後又用html_entity_decode()讀出來 這樣不是等於白做了嗎?? 還是我對這兩個函式有誤解 感謝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.168.71
cleanwind:這樣的話他的目的不是針對 html 或是 javascript 03/08 17:28
cleanwind:而是避免發生 SQL injection ... \ 03/08 17:29
owenabc123:指的是單引號之類的嗎? 03/08 17:31
tkdmaf:這個函式是對於「"」「'」「<」「>」這一類的符號採用特殊 03/08 22:48
tkdmaf:碼的方式來轉換,好處是可以避免資料或資料庫存取錯誤。 03/08 22:48
tkdmaf:以前可能很多人都會用addslashes來處理脫逸字的問題。 03/08 22:49
tkdmaf:但用這個函式就可以變成像是&lt; &quot;這樣的形式存在。 03/08 22:50
tkdmaf:當然你取出的話就要將他反轉還原回來。 03/08 22:50
tkdmaf:否則假設你存入的是HTML的話,沒有反轉你的網頁就亂掉了。 03/08 22:51
a613204:可是我剛剛試不用html_entity_decode解出來 03/08 23:29
a613204:&quot;&amp; 這類的也是會顯示正常分別是雙引號 跟 & 03/08 23:31
a613204:假如我用將<a href='xxx'>xxx</a>用htmlentities處理後 03/08 23:32
tkdmaf:你可以試試看開啟原始檔,看看你看到的是什麼碼。 03/08 23:33
tkdmaf:另外他只針對部份特殊字元碼轉換,而不是什麼字都轉。 03/08 23:33
a613204:他會顯示<a href='xxx'>xxx</a> 大於小於都會正常顯示出來 03/08 23:33
a613204:如果在用html_entitiy_decode還原,會變成一個xxx的超連結 03/08 23:34
tkdmaf:那正常啊!網頁中顯示HTML碼不對吧! 03/08 23:36
tkdmaf:有時候我為了展示一些原始檔在網頁上,就會把HTML的特別符 03/08 23:39
tkdmaf:號用&lt;的方式來呈現。否則會變成網頁型態。 03/08 23:39
tkdmaf:像奇摩知識家正是因為少了轉碼的過程。 03/08 23:40
tkdmaf:導致使用者問HTML時,「<」之後都會被視為HTML碼而消失。 03/08 23:40
tkdmaf:但因為實習生以上就具有使用編輯器的功能,反而就正常了。 03/08 23:41
tkdmaf:&lt;span&rt;123&lt;/span&rt;,經過瀏覽器會變成 03/08 23:44
tkdmaf:<span>123</span>。 03/08 23:44
tkdmaf:但如果你原始碼是上面這行的話,則只會顯示123。 03/08 23:45
a613204:感謝您的講解~~ 03/08 23:47