Skocz do zawartości
  • 0

MySQL relacje i sesje w cookie


producer
 Udostępnij

Pytanie

Witam chciałem się dowiedzieć czy dobrze planuje połączenie 2 tabel relacją jeden do wielu, na zasadzie przypisania danego tokena do danego id użytkownika. Efekt finalny ma być zapisywanie sesji w pliku cookie, ale nie można zapisać loginu i hasła to planuję zapisać token wygenerowany dla sesji. Jeden do wielu ponieważ 1 użytkownik może logować się  na kilku urządzeniach, wiec w tabeli 2 może być np: dwa razy id do jednego tokenu. Więc mam ... 


Tabela 1
- idusera (KP - Klucz Podstawowy)

- login

- haslo

- email

 

Tabela 2

- idusera (KP)

- token 

 

łącze to poleceniem:  ALTER TABLE `tabela2` ADD FOREIGN KEY (`idusera`) REFERENCES `tabela1`(`idusera`)

Teraz pytanie czy zaplanowałem to dobrze czy widoczne są tu jakieś błędy? 

 

Ps:

Jak w php wygenerować długi ciąg losowych znaków, istnieję do tego jakaś bezpieczna funkcja? Plus możecie polecić mi kilka funkcji do szyfrowania tego ciągu znaku a później do zdeszyfrowania. 

 

Bardzo dziękuję! 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

Tabele wyglądają dobrze, łączyć je możesz przy pomocy left join wyglądało by to następująco:

SELECT t1.idusera, t1.login, t1.haslo, t1.email, t2.token 
FROM t1 
LEFT JOIN t2 ON t1.idusera = t2.idusera;

t1 - Tabela 1
t2 - Tabela 2

Otrzymujesz w ten sposób 5 wierszy z rekordami z tabeli1 oraz tabeli2.

 

Jeśli chodzi o generowanie stringa losowego to zrobiłbym to w następujący sposób:

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
                              
echo generateRandomString();

Myślę, że na spokojnie nie musisz tego ani hash'ować ani tego jakoś zabezpieczać będzie to przechowywane w zmiennej oraz w bazie więc nie powinno być z tym problemu jeśli chciałbyś na siłę jeszcze to zabezpieczyć to pozostaje możliwość użycia funkcji hash:

 

string hash ( string $algo , string $data [, bool $raw_output = FALSE ] )

 

Tutaj wrzucam pomocne liki które powinny ci pomóc w 100%:

- https://www.w3schools.com/sql/sql_join_left.asp

- https://stackoverflow.com/questions/4356289/php-random-string-generator

- https://stackoverflow.com/questions/51350128/hashing-a-string-in-php

- http://php.net/manual/en/function.hash.php

 

Pozdrawiam.

:)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
 Udostępnij

  • Ostatnio przeglądający forum MySQL relacje i sesje w cookie   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...