Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

MySQL relacje i sesje w cookie


producer

Pytanie

Opublikowano

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

 

 

 

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

Opublikowano

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.

:)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...