2017-10-10 62 views
0

我有這個網絡應用程序,並且有大約15個不同的文件處理用戶輸入。如何在輸入消毒後正常返回數據庫中的數據?

每次我接受用戶輸入時,它都會使用filter_var()函數清理特殊字符,因爲沒有任何注入和什麼。

不過,我已經運行到這個問題,在被返回的數據返回到前端與特殊字符的編碼靜止,就像這樣:

"'Sample & 'Code'" 

變得並進入前端像...

"'Sample & 'Code'" 

或類似的東西;我認爲我的觀點碰到了。

我目前的策略是進入中後端的所有文件,並使用

html_entity_decode(htmlspecialchars_decode([text], ENT_QUOTES)) 

到那些可能有用戶輸入的每個輸出。

因此,我的問題是是否有更有效的方式來做到這一點。我在前端使用Vue來控制從後端接收的數據,所以我認爲如果我在前端而不是後端執行它,可能會有相同的時間。有什麼建議麼?

也許有一個當前的策略,我應該在將數據編碼到數據庫之前記住,但我希望有人能夠給出答案,以幫助我在未來的項目中。

回答

0

對於php可以使用json_encode()功能:

public function getSomeData() { 
    ... 
    return json_encode('Sample & 'Code'); 
} 

這裏我的假設是,如果你做了var_dump('Sample & 'Code'),它會打印出'Sample & 'Code'

+0

當我將其發送到前端,我按照你所說的發送它,但是文本是在一個關聯數組中,例如'結果' - >「示例&'代碼'」。問題是文本沒有被解碼爲「Sample&'Code'」,而是它看起來像我剛纔給出的關聯數組。 – DJSweetness

+0

@DJSweetness我'json_encode([ '結果'=> html_entity_decode( 「" '樣品& '代碼' " 」))'重新創建您的問題,我得到'{「 結果 」:「 \」 '採樣和' 代碼「\ 「」}'。 – Grigio

+0

我同意使用json_encode的方法,但是您使用html_entity_decode將數據轉換爲可見的形式,這是解碼文本的答案,但我的問題更傾向於設計策略或更簡單的方法而不是追加一個html_entity_decode給我所有的變量。 – DJSweetness