The Paragon Initiative blog has posted a guide to what they see as a way to safely generate random strings and integers in PHP applications.
Generating useful random data is a fairly common task for a developer to implement, but also one that developers rarely get right. […] It’s generally not okay to use a weak random number generator unless both of the following two conditions are met: the security of your application does not depend in any way on the value you generate being unpredictable or there is no requirement for each value to be unique (up to a reasonable probability).
He gives some examples of places where it’s a must to use a „cryptographically secure pseudo-random number generator“ including generating random passwords, encryption keys or IVs for data in CBC mode. The article goes on to talk about some of the problems that could come from using weak generators. It then gets into the process for generating random values and the use of the random_* functions in PHP (or using this polyfill) to more safely generate the numbers. Included is code showing the process and some advice around converting random bytes to both strings and integers.