為什么使用php里面的json?
因為,舉例來說,如果你使用一個數組來存儲數組編號,并希望將數據存儲在數據庫中,數組可以不要儲存。你需要把它轉換成一個json字符串,所以你需要使用一個json字符串。
如何使用PHP生成隨機字符串?
我們可能經常使用邀請碼、郵件驗證碼,或者需要使用一個唯一的字符串來標記用戶屬性。
今天,讓我們我們不談先進的發電計劃全球唯一ID"。讓讓我們來討論一個簡單的方法來生成一個獨特的,隨機的,數組字母串。
學習時間PHP有一個內置函數uniqid,用來生成一個唯一的id。功能結構形式:
stringuniqid([string$prefix[,bool$more_entropyfalse]])
用于根據當前時間的微秒數獲取帶有前綴的唯一ID。
但是,這種方法生成的ID并不安全,根據本地時間戳的不同,有可能在相同的微秒內生成相同的ID。所以為了安全起見,需要添加prefix參數來顯示區別。
more_entropy參數使生成的ID更加唯一。如果設置為TRUE,uniqid()將在返回的字符串末尾添加一個額外的扇形(使用組合線性全等生成器)。
夠了嗎?這當然不是最佳解決方案。我們嘗試其他解決方案。openssl帶來的加密和唯一性。
bin2hex(OpenSSL_random_pseudo_bytes($bytes))
使用openssl_random_pseudo_bytes函數生成偽隨機字符串的字節,然后使用bin2hex將其格式化為十六進制字符串。
生成的偽隨機字節數由長度參數決定。它還指示是否使用具有強加密功能的算法來生成偽隨機字節,該操作通過可選的crypto_strong參數來執行。在極少數情況下,此方法返回的參數會顯示為假。
美中不足的是,這樣生成的數字串只有[0-9][a-z]之間,不夠廣泛。我們試圖加強這種生成方法,提高其健壯性。
上面的函數會生成一個隨機數,間隔為[$min,$max]。然后調用這個函數生成一個指定長度的字符串。
函數crypto_rand_secure函數實現方法,在PHP標準函數中,可以用rand/mt_rand函數代替。
在PHP7中,系統提供了更好的功能。可以用來代替crypto_rand_secur:_)
我是@程序員的助手,我繼續分享我的編程知識。歡迎關注。