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