程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 關於unserialize的問題

關於unserialize的問題

編輯:PHP綜合

特的理念。’,

‘uid’ => 1,
‘nickname’ => ‘土豆男’,
’site’ => ”,
’sitetype’ => 1,
’starttime’ => 1191074174,
‘lasttime’ => 1191629784,
‘totleviews’ => 14,
‘totleblogs’ => 3
);

由於程序自動判斷了magic_quotes_gpc並將所有POST,GET的數據自動轉義(addslashes下),所以上面數組中的$message['sitename']在入庫之前就變成了土人\’部落,當進入mysql數據庫的保存的時候,保存的內容依然是 土人’部落(不要問我\’怎麼入mysql庫以後就變成了’ 這是mysql的轉義特性,絕大多數數據庫也都是靠\來轉義的),這時候是沒有問題的。

當從數據庫中查出這個字段,然後unserialize的時候問題就來了,由於從數據庫中查出來的是沒有轉義的 土人’部落 這個值,於是在unserialize的時候就會失敗。

想了幾種解決方式:

第一,將此數組不再存在一個字段內,每個key獨立存在一個字段內,此種被排除,系統已經跑起來了,改起來麻煩的說。

第二,將數據在存入mysql之前對serialize的數組再addslashes下,這時候存入mysql的就是 土人\’部落 了,但是數據庫查出來unserialize之後的數據還是 土人\’部落 所以需要再次對此數組逐一stripslashes。

第三,放棄用戶體驗吧:) ,不允許’/”出現在,有了就自動替換掉

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved