| Conditions | 3 |
| Paths | 4 |
| Total Lines | 21 |
| Code Lines | 10 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
| 1 | <?php |
||
| 29 | public function generateRandomToken(int $length = 32): string |
||
| 30 | { |
||
| 31 | $chars = str_split('abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'); |
||
| 32 | $len_chars = count($chars); |
||
|
|
|||
| 33 | $token = ''; |
||
| 34 | |||
| 35 | for ($i = 0; $i < $length; $i++) { |
||
| 36 | $token .= $chars[mt_rand(0, $len_chars - 1)]; |
||
| 37 | } |
||
| 38 | |||
| 39 | # Number of 32 char chunks |
||
| 40 | $chunks = ceil(strlen($token) / 32); |
||
| 41 | $md5token = ''; |
||
| 42 | |||
| 43 | # Run each chunk through md5 |
||
| 44 | for ($i = 1; $i <= $chunks; $i++) { |
||
| 45 | $md5token .= md5(substr($token, $i * 32 - 32, 32)); |
||
| 46 | } |
||
| 47 | |||
| 48 | # Trim the token to the required length |
||
| 49 | return substr($md5token, 0, $length); |
||
| 50 | } |
||
| 52 |