2014-02-15 62 views
0

我已經構建了一個mysql數據庫表所支持的聯機內容頁,其中包含一個包含事件標題的字段。管理員頁面允許添加,編輯和刪除條目。最近有人問我,如果網絡鏈接可以嵌入在標題字段,發現編輯領域包括以下形式的鏈接:從mysql中檢索javascript字符串以供後續編輯

Click <a class=hdg onclick="newWindow('http://www.address');"> HERE </a> to open web link 

會做的伎倆,並在一個新窗口中打開網址newWindow函數。

不幸的是,任何使用管理頁面編輯這樣的mysql記錄的嘗試都會破壞管理頁面的顯示,因爲字符串是從標題字段返回爲文本框的值,然後鏈接文本由瀏覽器,以便只有部分字段顯示在屏幕上的框中。該字符串的其餘部分出現在框外,這對於非技術用戶來說很混亂。

一個快速而髒的修復方法是在編輯時使用Ctrl-A選擇整個文本框的內容,然後在將整個標題內容正確提交到數據庫時,將整個標題內容鍵入或粘貼到該框中。但是,如果有人知道如何編寫JavaScript代碼,那麼一方面它將作爲Web鏈接正常工作,另一方面可以通過HTML表單編輯,我很樂意知道。最終,我想我會重新構建數據庫來分別保存實際的URL,並使用PHP來構建JavaScript鏈接,但同時呢?

回答

0

使用htmlentities()把字段的值與所有實體取代HTML特殊字符的網頁,所以他們不會被解釋:

echo '<textarea>' . htmlentities($value) . '</textarea>'; 
+0

感謝您的回覆,Barmar。 htmlentities()解決了HTML表單字段的格式問題,並且在回寫到數據庫記錄時使用了html_entity_decode(),以確保存儲的字符串正常工作。這給了我一個喘息的空間,爲字符串的不同位重新構建數據庫,並重新編寫php代碼,將這些位放在要使用字符串的網頁上。 –