예제 #1
0
 /**
  * @covers PsRand::string
  */
 public function testString()
 {
     $sequences = array();
     for ($i = 0; $i < self::TOTAL; $i++) {
         $StRiNg = PsRand::string(MD5_STR_LENGTH, null, false);
         $this->assertTrue(is_string($StRiNg) && strlen($StRiNg) === MD5_STR_LENGTH && !is_numeric($StRiNg), "{$i}: {$StRiNg}");
         $this->assertFalse(strtolower($StRiNg) === $StRiNg, "{$i}: {$StRiNg}");
         $this->assertFalse(strtoupper($StRiNg) === $StRiNg, "{$i}: {$StRiNg}");
         $sequences[] = $StRiNg;
         $string = PsRand::string(MD5_STR_LENGTH, false, false);
         $this->assertTrue(is_string($string) && strlen($string) === MD5_STR_LENGTH && !is_numeric($string) && strtolower($string) === $string, "{$i}: {$string}");
         $this->assertFalse(strtoupper($string) === $string, "{$i}: {$string}");
         $sequences[] = $string;
         $STRING = PsRand::string(MD5_STR_LENGTH, true, false);
         $this->assertTrue(is_string($STRING) && strlen($STRING) === MD5_STR_LENGTH && !is_numeric($STRING) && strtoupper($STRING) === $STRING, "{$i}: {$STRING}");
         $this->assertFalse(strtolower($STRING) === $STRING, "{$i}: {$STRING}");
         $sequences[] = $STRING;
         $StRiNg1 = PsRand::string(MD5_STR_LENGTH, null, true);
         $this->assertTrue(is_string($StRiNg1) && strlen($StRiNg1) === MD5_STR_LENGTH && !is_numeric($StRiNg1), "{$i}: {$StRiNg1}");
         $this->assertFalse(strtolower($StRiNg1) === $StRiNg1, "{$i}: {$StRiNg1}");
         $this->assertFalse(strtoupper($StRiNg1) === $StRiNg1, "{$i}: {$StRiNg1}");
         $sequences[] = $StRiNg1;
     }
     self::log(print_r($sequences, true));
     //Проверим, что все последовательности - уникальны
     $this->assertTrue(count(array_unique($sequences)) === count($sequences));
 }
예제 #2
0
 /**
  * Метод генерирует новый код и вставляет его в базу
  */
 public function generateAndSave($type, $userId)
 {
     $this->dropUnusedCodes($type, $userId);
     $code = $this->checkCode(PsRand::string(self::CODE_LENGTH, false, true));
     $affected = $this->update('insert into ps_user_codes (v_type, id_user, v_code, dt_add, n_status) values (?, ?, ?, unix_timestamp(), ?)', array($type, $userId, $code, self::CODE_STATUS_ACTIVE));
     check_condition($affected == 1, "Код не был сохранён в базу");
     return $code;
 }
예제 #3
0
 /**
  * Метод добавляет хешированные директории к пути
  * 
  * @param type $dirs - директории "перед" хешированными директориями
  * @param type $hashBase - база для хеша. Если это md5, то он и будет использован для построения пути.
  * @return array - массив директорий, составляющих путь к папке
  */
 private function addHashFolders($dirs = null, $hashBase = null)
 {
     $hash = PsCheck::isMd5($hashBase) ? $hashBase : md5($hashBase ? $hashBase : PsRand::string());
     $dirs = to_array($dirs);
     $dirs[] = 'f' . $hash[0];
     $dirs[] = 'f' . $hash[1];
     $dirs[] = 'f' . $hash[2];
     return $dirs;
 }
예제 #4
0
파일: PsUtil.php 프로젝트: ilivanoff/www
 /**
  * Функция возвращает уникальную метку времени, пригодную для имени файла:
  * 2014-09-15_14-13-55_pos (дата_время_уникальность в рамках секунды).
  */
 public static function fileUniqueTime($addUnique = true)
 {
     return date(DF_FILE) . ($addUnique ? '_' . PsRand::string(4, false, false) : '');
 }