Intereting Posts

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

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

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

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

Любая помощь приветствуется.

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

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

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

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

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

Просто используйте встроенную функцию uniqid() . См. Руководство по PHP .

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

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

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

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

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

 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; 

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

  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']; } }