作者terrybob (罪雲樵)
看板PHP
標題[請益] 雙引號字串的存取
時間Tue Dec 4 12:11:57 2012
在input type="text"時,若使用者輸入雙引號資料,並儲存至資料庫後;
若要再編輯,會因為雙引號的關係,之後的資料都會沒有顯示在input裡。
例如:
第1次新增時->我覺得這網站好"讚"呀…
「儲存至資料庫: 使用mysqli_real_escape_string($mysql, $value); 」
第2次編輯時->我覺得這網站好" (雙引號之後的資料都不見)
從原始碼看,因為 ↓value值因雙引號已配對
<input type="text" value="我覺得這網站好"讚"呀… />
第2次更新時->「我覺得這網站好」 ←只儲存這字串,而雙引號後的資料沒了!
若要改正,其實很快速從input type=text value,用單引號去包php變數就好了
但偏偏網站已經有很多input type=text value都是用雙引號去顯示值…
請問各位高手們,有更好的方式去解決嗎?…
以上,謝謝。
--
習慣一個人在房間裡,安靜地享受書的內容…
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.75.186.7
1F:→ j094097:把value作處理先把"改成"? 12/04 12:34
2F:推 wayway2004:value="<? echo htmlspecialchars($value); ?>" 12/04 12:52
3F:→ gname:自己寫過濾不要用內建 12/04 13:15
4F:→ davidou:樓上 為什麼不要內建 12/04 15:24
5F:推 carlcarl:同四樓疑問 12/04 18:14
6F:→ gname:根據你實際的需求去鐉寫你要的過濾函式才是王道 12/04 21:57
7F:→ buganini:樓上-1 正常的需求都有對應的內建含式,自己搞效率差又 12/05 13:17
8F:→ buganini:不完整。 12/05 13:17
9F:→ gname:內建的不見得能符合你的需求,你預期要拿什麼樣的資料就設個 12/05 14:51
10F:→ gname:白名單,其餘全排除 , 這是最簡易的方式... 12/05 14:52
11F:推 buganini:以這篇的需求而言,沒什麼好排除的,需要的是正確escape 12/05 15:18
12F:→ buganini:而且也並不困難,就像2樓那樣而已 12/05 15:19
13F:→ terrybob:謝謝大家的建議,我最終採用2樓方式,因為有時程的壓力 12/05 16:03
14F:→ terrybob:我也想過用自訂的方式輸出,不過需求來說暫時沒這麼複雜 12/05 16:03
15F:→ terrybob:以能正常輸出在前台與input type為主就好,謝謝大家。 12/05 16:03
16F:推 wayway2004:原PO的判斷也算是正確,看你當時是要練功還是要趕件XD 12/05 16:24