Google Code Prettify - 輕量級的語法上色工具

星期四, 9月 17, 2015

php的serialize與unserialize

用serialize記下來的資料,在用unserialize轉回原本的型態時..
若有遇到 " (雙引號[double question mark]) 會無法解析回原本的php變數型態

可以在使用serialized轉換前,用 htmlspecialchars() 或 urlencode() 來解決這個問題
但較好的方式是用htmlspecialchars(),這樣的好處是不用再用urldecode()來把它轉換回正常的文字
==========================================================

link 用 urlencode()
PHP傳值已預設自動使用urlencode  (JSON也是)


input / textarea 用 htmlspecialchars() 
前端顯示時使用可避免XSS attacks
http://anti-hacker.blogspot.tw/2008/01/xsscross-site-script.html


PHP 中寫入資料庫前的addslashes 已不建議使用
我要改用PDO寫入資料庫PDO prepared statements (for SQL queries)
http://note.tc.edu.tw/624.html
http://codex.wiki/post/164871-719



稍微記載一下這二者的說明


serialize --- 產生一個可儲存的值的表示
語法 : string serialize (mixed value)
說明 :
serialize( )傳回一個包含由value所表示的byte-stream字串,它能儲存在任何地方。
這可用來儲存或傳遞PHP的值,而不失去它們的型態和結構。
使用unserialize( )能使serialized字串再次成為原來PHP的值。
serialize( )能處理的型態有integer、double、string、array(多面的)、object(物件的屬性將會serialized,但方法則會lose)

unserialize --- 從儲存的值中建立PHP的值
語法 : mixed unserialize (string str)
說明 :
unserialize( )取一個serialized變數,並且將它轉換回PHP的值,傳回轉換後的值,
可以是integer、double、string、array、object。
如果物件有serialized,則它的方法不會保存在所傳回的值之中。

http://cychiang719.blogspot.tw/2009/03/phpserializeunserialize.html158px158px