Skocz do zawartości
producer

MySQL relacje i sesje w cookie

Polecane posty

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ę! 

 

Udostępnij ten post


Link to postu
Pani Kasia

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.

Udostępnij ten post


Link to postu

Bądź aktywny! Zaloguj się lub utwórz konto

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

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.


×