• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Generowanie unikatowego userid i wpisywanie go do bazy

Aruba Cloud - Virtual Private Server VPS
+1 głos
258 wizyt
pytanie zadane 1 stycznia 2021 w PHP przez MateuszSikorski Obywatel (1,070 p.)
Witam, chciałbym aby przy rejestracji generowało się unikatowe user id i wpisywało do bazy danych, wie może ktośjak to zrobić?  Z góry dziękuję :)

1 odpowiedź

+1 głos
odpowiedź 1 stycznia 2021 przez VBService Ekspert (256,600 p.)
wybrane 1 stycznia 2021 przez MateuszSikorski
 
Najlepsza

generowało się unikatowe user id

Tak na szybko: wink
[ uniqid ] [ microtime ] [ ini_set ] [ random_bytes ] [ openssl_random_pseudo_bytes
crypt() ] [ random_int ]

<?php
    $user_id = str_replace('.', '', uniqid('user_', true));
    echo $user_id;
?>
<?php
    $m = microtime(true);
    $user_id = str_replace('0.', '', floor($m).($m - floor($m)));
    echo $user_id;
?>
<?php
    $user_id = ltrim((microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"]), '0.');
    echo $user_id;
?>
<?php
    ini_set("precision", 18);
    $user_id = 'id_'.(microtime(true)/0.00000001);
    echo $user_id;
?>

You should instead opt for: uniqidReal()

<!DOCTYPE html>
<html>
  <body>
    <pre>
<?php
  function uniqidReal($lenght = 13) {
    if (function_exists("random_bytes")) {
      $bytes = random_bytes(ceil($lenght / 2));
    } elseif (function_exists("openssl_random_pseudo_bytes")) {
      $bytes = openssl_random_pseudo_bytes(ceil($lenght / 2));
    } else {
      throw new Exception("no cryptographically secure random function available");
    }
    return substr(bin2hex($bytes), 0, $lenght);
 }

  for($i=0; $i<=5; ++$i) {
    $uniqid_real = uniqidReal();
    echo uniqid(), "\t", $uniqid_real, PHP_EOL;
  }
?>
    </pre>
  </body>
</html>

Wszystko razem, co wyżej: wink

<!DOCTYPE html>
<html>
  <head>
    <style>
      pre {
        font: 1em/1.6em monospace;
      }
    </style>
  </head>
  <body>
    <pre>
<?php
$m = microtime(true);
$user_id = str_replace('0.', '', floor($m).($m-floor($m)));
echo '<mark>                    microtime(): </mark> ', $user_id, PHP_EOL;

$user_id = str_replace('.', '', uniqid('user_', true));
echo '<mark>                       uniqid(): </mark> ', $user_id, PHP_EOL;

$user_id = ltrim(($m - $_SERVER["REQUEST_TIME_FLOAT"]), '0.');
echo '<mark> $_SERVER["REQUEST_TIME_FLOAT"]: </mark> ', $user_id, PHP_EOL;

ini_set("precision", 18);
$user_id = 'id_'.($m/0.00000001);
echo '<mark>       ini_set("precision", 18): </mark> ',$user_id, PHP_EOL, PHP_EOL;

function uniqidReal($lenght = 13) {
  if (function_exists("random_bytes")) {
    $bytes = random_bytes(ceil($lenght / 2));
  } elseif (function_exists("openssl_random_pseudo_bytes")) {
    $bytes = openssl_random_pseudo_bytes(ceil($lenght / 2));
  } else {
    throw new Exception("no cryptographically secure random function available");
  }
  return substr(bin2hex($bytes), 0, $lenght);
}

echo '<mark>uniqid()</mark>', "\t\t", '<mark>uniqidReal()</mark>', PHP_EOL;
for($i=0; $i<=5; ++$i) {
  $uniqid_real = uniqidReal();
  echo uniqid(), "\t\t", $uniqid_real, PHP_EOL;
}
?>
	</pre>
  </body>
</html>

komentarz 1 stycznia 2021 przez MateuszSikorski Obywatel (1,070 p.)
Dzięki bardzo :)
komentarz 1 stycznia 2021 przez VBService Ekspert (256,600 p.)

Mój wybór by padł na: uniqidReal(24) wtedy pole w bazie user_id CHAR(24) NOT NULL

Podobne pytania

0 głosów
2 odpowiedzi 342 wizyt
0 głosów
3 odpowiedzi 280 wizyt
pytanie zadane 30 grudnia 2016 w PHP przez Radekol Bywalec (2,880 p.)
0 głosów
2 odpowiedzi 1,867 wizyt
pytanie zadane 19 października 2018 w Python przez Sheida Użytkownik (950 p.)

93,327 zapytań

142,323 odpowiedzi

322,397 komentarzy

62,657 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...