PHP Class for generating unique non chronological ids from a number list
This code is part of a larger project where we needed user ids that would be simple to remeber but hard to predict.
Example
require_once('class.GenRandID.php'); $ab=new GenRandID(); $i=1; while ($i <= 500) { echo "$i ::"; $enc=$ab->encode($i); echo "$enc ::"; echo $ab->decode($enc)." <br />"; $i++; }
Full Code
<?php class GenRandID { // All the vowels, some consonants and some numbers have been removed public $TR_ENC = '56789dfghjklmnpqrstvwz'; function __construct() { $this->BASE=strlen($this->TR_ENC); $this->TR_DEC=substr('0123456789abcdefghijklmnopqrstuvwxyz',0,$this->BASE); } public function encode($userID) { $rand=rand(10,99); $newID=$userID.$rand; $base=base_convert($newID, 10, $this->BASE); $transl=strtr($base, $this->TR_DEC, $this->TR_ENC); return($transl); } public function decode($userID) { $transl=strtr($userID, $this->TR_ENC, $this->TR_DEC); $base=base_convert($transl, $this->BASE, 10); $userID=substr($base, 0, -2); return($userID); } } ?>