Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Laravel Rejestracja - tworzenie unikalnego identyfikatora usera, tworzenie unique id oraz sprawdzanie czy dany ID już nie istnieje.
casperii
post 21.05.2019, 21:35:37
Post #1





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


Panowie mam pytanie odnośnie zedytowania auth Laravela odnośnie rejestracji.
Obecny kod RegisterController.php

  1. namespace App\Http\Controllers\Auth;
  2.  
  3. use App\{User,Role};
  4. use App\Http\Controllers\Controller;
  5. use Illuminate\Support\Facades\Validator;
  6. use Illuminate\Foundation\Auth\RegistersUsers;
  7.  
  8. class RegisterController extends Controller
  9. {
  10.  
  11. use RegistersUsers;
  12.  
  13. protected $redirectTo = '/admin';
  14.  
  15. public function __construct()
  16. {
  17. $this->middleware('guest');
  18. }
  19.  
  20.  
  21. protected function validator(array $data)
  22. {
  23. return Validator::make($data, [
  24. 'user' => 'required|string|max:255',
  25. 'email' => 'required|string|email|max:255|unique:users',
  26. 'password' => 'required|string|min:6|confirmed',
  27. ]);
  28. }
  29.  
  30.  
  31. protected function create(array $data)
  32. {
  33. $user = User::create([
  34. 'user' => $data['user'],
  35. 'email' => $data['email'],
  36. 'password' => bcrypt($data['password']),
  37. ]);
  38.  
  39. // tu chciałbym dodać id_user = numer generowany
  40. }
  41. }


teraz do tego chciałbym dodać coś takiego w czystym php'ie by wyglądało tak:

  1.  
  2. $jest = false;
  3. do{
  4. $id_user = rand(0, 999999999);
  5. $id_user = str_repeat('0', 9-strlen($id_user)) . $id_user;
  6.  
  7. $result = 'SELECT count(`id_user`) FROM users WHERE id_user = '$id_user '
  8. $sql = mysql_query($result);
  9. $jest=mysql_num_rows($sql)>0;
  10. }
  11. while($jest);


Czy ktoś wie jak to połączyć ze sobą ? smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 22.05.2019, 07:13:11
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Może zamiast tej dziwnej pętli zastosuj UUIDv4 wtedy będziesz miał na 99% unikalną wartość
Go to the top of the page
+Quote Post
casperii
post 22.05.2019, 15:31:25
Post #3





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


@Pyton_000 dzięki za podpowiedź nie znałem UUIDv4 - jak już wspomniałeś daje nam to 99% - a przy obecnych 23 tyś users procentowość maleje.
Zatem nadal pozostaje kwestia jak sprawdzić czy ów wylosowany ciąg znajduje się w bazie.
Go to the top of the page
+Quote Post
Pyton_000
post 22.05.2019, 15:43:39
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


23tyś... dobre sobie wink.gif U nas aktualnie w jednej z tabel jest... 83 456 092 wierszy z unikalnymi UUID i na razię się tym nie przejmuję
Go to the top of the page
+Quote Post
casperii
post 22.05.2019, 15:54:06
Post #5





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


no dobra zastosuję tak jak piszesz ,najwyżej później napiszę , że taki jeden @Pyton_000 na forum mi tak kazał yahoo.gif
Przy okazji nie wiem czy to tak kulturalnie , ale wiesz może jak zrobić w laravelu by "to" wyświetlało się tylko na stronie głównej, jeżeli przeklikam to "to" znika smile.gif

Go to the top of the page
+Quote Post
nospor
post 22.05.2019, 15:57:30
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Tak z czystej ciekawosci, bo musze chyba cos przegapiac:
czemu w twoim cudnym algorytmie losowosci ( wink.gif ) masz
= str_repeat('0', 9-strlen($id_user))
czyli do kazdego wylosowanego usera dodajesz iles tam 0 ktore sa zalezne od wylosowanego id usera a przez to zawsze dla tego id usera beda takie same? Przeciez to juz nie dodaje zadnej unikalnosci
No chyba ze chciales poprostu zawsze miec te sama liczbe cyfr. No ale do tego uzywa sie str_pad() smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
casperii
post 22.05.2019, 16:02:26
Post #7





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


jeżeli rand wylosował mniej niż 9 cyfr - dopycham reszte zerami.
Go to the top of the page
+Quote Post
nospor
post 22.05.2019, 16:04:54
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




To tak jak napisalem
Cytat
No chyba ze chciales poprostu zawsze miec te sama liczbe cyfr. No ale do tego uzywa sie str_pad()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
casperii
post 22.05.2019, 17:52:00
Post #9





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


Jeszcze pytanie takie z innej beczki.

Odnośnie kodu:

  1. protected function create(array $data)
  2. {
  3. // $data['id_user'] = rand(100, 999999999);
  4. $user = User::create([
  5. 'id_user' => 100,
  6. 'user' => $data['user'],
  7. 'email' => $data['email'],
  8. 'password' => bcrypt($data['password']),
  9. //'key' => Str::uuid()->toString(),
  10. ]);
  11.  
  12. return $user;
  13. }



czy do tablicy $data dane muszą tylko z zewnątrz (z pliku blade ) pochodzić ? Ponieważ jak wklepuje w ten (w powyższy) sposób to wyskakuje błąd:
  1. "SQLSTATE[HY000]: General error: 1364 Field 'id_user' doesn't have a default value

Go to the top of the page
+Quote Post
viking
post 22.05.2019, 18:23:09
Post #10





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Pole jest dodane w modelu protected $fillable = ['id_user'];


--------------------
Go to the top of the page
+Quote Post
casperii
post 22.05.2019, 18:58:34
Post #11





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


czyli rozumiem, że to co wysyłamy z formularza postem z pliku blade przechodzi przez app\User.php i przekazuje do kontrollera RegisterController ?


Go to the top of the page
+Quote Post
Pyton_000
post 22.05.2019, 19:08:25
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


User::create towrzy encję User na danych z tablicy, zapisuje i zwraca obiekt.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 14:50