Через пару дней у меня возникла проблема с моей функцией, которая генерирует случайный идентификатор.
Вот функция:
public static function generatePin($max)
{
$key = "";
$possibilities = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$possibilities .= "abcdefghijklmnopqrstuvwxyz";
$possibilities .= "0123456789";
$i = 0;
while ($i <= $max) {
$detail = Tools::substr($possibilities, mt_rand(0, Tools::strlen($possibilities)-1), 1);
$key .= $detail;
$i++;
}
return $key;
В моем файле, когда я хотел использовать эту функцию, я делал это (работает отлично, так как много месяцев):
$this->my_secure_pin = Tools::encrypt(Class::generatePin(7));
Теперь моя переменная «secure_pin» не может измениться .. У меня всегда один и тот же идентификатор, и он не хочет меняться, как раньше. Мой случайный идентификатор становится одним и тем же идентификатором для каждого запроса .. Grrrr
Вот пример:
1 / Я захожу на свою страницу, моя переменная «secure_pin» 622c7da19ec263b59f452b9fc5.
2 / Я обновляю свою страницу, моя переменная «secure_pin» всегда 622c7da19ec263b59f452b9fc5
3 / Я покидаю свою страницу и возвращаюсь к ней, моя переменная «secure_pin» всегда 622c7da19ec263b59f452b9fc5
4 / Если я очищаю кеш, моя переменная «secure_pin» меняется! ..
=> Итак, когда многие люди заходят на мою страницу, у них все тот же «secure_pin» … 🙁
Я хочу (как пару дней назад) secure_pin для всех, кто заходит на эту страницу, меняющийся «secure_pin», если я обновляю страницу или возвращаюсь к ней и т. Д.
Без изменений, без обновлений, ничего .. Есть идеи? : ‘(
Большое спасибо за вашу помощь !
РЕДАКТИРОВАТЬ 1 Вот функция «шифровать»:
public static function encrypt($passwd)
{
return md5(pSQL(_COOKIE_KEY_.$passwd));
}
РЕДАКТИРОВАТЬ 2 : Вот функция «substr»:
static function substr($str, $start, $length = false, $encoding = 'utf-8')
{
if (is_array($str))
return false;
if (function_exists('mb_substr'))
return mb_substr($str, (int)($start), ($length === false ? self::strlen($str) : (int)($length)), $encoding);
return substr($str, $start, ($length === false ? self::strlen($str) : (int)($length)));
}
Задача ещё не решена.
Других решений пока нет …