Подтвердить что ты не робот

Создание уникального ключа

Каков наилучший способ создания уникального ключа, о котором нельзя легко догадаться?

Я хотел бы создать уникальный ключ как для активации учетной записи, так и для направления, включая контрольную сумму, чтобы помочь пользователям легко догадаться о активах других пользователей или реферальных ключах.

Кроме того, в PHP можно создать собственный ключ сеанса? Если да, то как бы вы сделали это уникальным?

Любая помощь очень ценится.

4b9b3361

Ответ 1

Не слишком усложняйте его:

$key = md5(microtime().rand());

Ответ 2

Вы можете использовать uniqid для создания уникальных идентификаторов. Посмотрите на комментарии для PHP-реализации поколения UUID (универсально уникальный идентификатор).

Ответ 3

Это то, что я использую для ключа uniq в php:

$activation = md5(uniqid(rand(), true));

Ответ 5

Другие ответы уже затронули тему создания (псевдо) уникального идентификатора, поэтому я расскажу только, как установить свой собственный идентификатор сеанса:

Идентификатор сеанса в PHP автоматически генерируется, но вы можете установить свой собственный. См. session_id(), как это сделать.

Пример: он работает следующим образом:

$mySessionId = generate_my_session_id();
$oldId = session_id($mySessionId);
session_start(); // session must start _after_ setting the id.

Ответ 6

Я использую этот script для случайного создания паролей, вы меняете пару вещей вокруг, и это будет хорошо работать для того, что вы хотите.

function generatePassword ($length) {
    $possible = "0123456789abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRESTUVWXYZ_"; // allowed chars in the password
     if ($length == "" OR !is_numeric($lengh)){
      $length = 8; 
     }

     srand(make_seed());

     $i = 0; 
     $password = "";    
     while ($i < $length) { 
      $char = substr($possible, rand(0, strlen($possible)-1), 1);
      if (!strstr($password, $char)) { 
       $password .= $char;
       $i++;
       }
      }
     return $password;
}

и для вашего собственного сеансового ключа его довольно простой

start_session();
$_SESSION['NewSessionVariable']=$VariableToSet;

Ответ 7

Вы можете использовать эту функцию, которую я написал иногда назад.

   function generateToken($type = null) {
  if($type) {
    return '<input type="hidden" name="token_id" value="'.$_SESSION['token_id'].'">';
  } else {
    if(!isset($_SESSION['token_id'])) {
      $token_id = md5(substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 10));
      $_SESSION['token_id'] = $token_id;
      return $_SESSION['token_id'];
    }
    return $_SESSION['token_id'];
  }
}