深圳網(wǎng)站建設(shè)公司創(chuàng)絡(luò)在去年的舊版本網(wǎng)站后臺中添加了統(tǒng)計代碼等JS代碼管理的功能,最近我們發(fā)現(xiàn)客戶在使用此功能的時候有的時候會出現(xiàn)添加或者編輯出錯的問題,經(jīng)過分析我們已經(jīng)徹底解決了這個問題。
問題重現(xiàn):
由于已經(jīng)有好幾位客戶向我們反饋了這個問題,最初技術(shù)員以為是客戶操作問題,因為大多數(shù)客戶在使用這個功能的時候是沒有問題的。但是后來我們發(fā)現(xiàn)在不同的服務(wù)器上,這個功能的使用效果不同。于是我們就猜測可能是服務(wù)器環(huán)境有關(guān)。
問題描述:
由于JS代碼中有一些常見的特殊字符,例如斜杠、單引號等等,同時為了防止SQL注入攻擊,我們的技術(shù)員在處理用戶提交的數(shù)據(jù)的時候會處理掉這些特殊字符。我們會使用到的一對函數(shù)就是addslashes()和stripslashes(),但是這兩個函數(shù)的作用會受到magic_quotes_gpc的影響。
問題關(guān)鍵:
magic_quotes_gpc的開啟狀態(tài)直接影響上述函數(shù)的作用,如果magic_quotes_gpc的狀態(tài)為開啟的情況下,PHP程序已經(jīng)默認處理了特殊字符,因此如果此時在使用addslashes去處理就會出錯。
解決方案:
使用get_magic_quotes_gpc()函數(shù)判斷magic_quotes_gpc的狀態(tài),根據(jù)不同的狀態(tài)對客戶提交的數(shù)據(jù)采取不同的處理方案。