Napisałem skrypt rejestracji (to było banalne) i zacząłem się bawić ze skryptem do logowania. Niestety, tu już było trochę gorzej ale po paru łądnych godzinach dałem rade. Teraz mam jedno pytanie: Czy aby nie za dużo instrukcji warunkowych?
Funkcja wygląda mniej-więcej tak:
jeśli formularz wypełniony dobrze {
-jeśli login istnieje w bazie{
--jeśli hasło podane w formularzu jest takie samo jak to zakodowane w bazie dla danego loginu{
---jeśli jest już zalogowany{
---}
---jeśli NIE jest zalogowany{
---}
--}
-}
Logowanie opiera się na stworzeniu ciastka z danymi:
1. kod sesji (te składa się między innymi z aktualnego czasu i adresu itp. a to wszystko podwójnie zaszyfrowane odmiennymi metodami)
2. Login pobrany z formularza
Tylko teraz obojętnie co chce zrobić związanego z wymuszeniem logowania, musze podać trzy warunki i to trochę mi sie wydaje nie takie jak powinno.
Gdy użytkownik sie wylogowuje to kod sesji w ciastku ustawia się na 'brak_sesji' a sesja w bazie danych na 1.
Przykład: System komentarzy jest dostepny tylko dla zalogowanych i mam funkcję if/elseif, która sprawdza czy jest zalogowany.
Jeśli użytkownik nie jest zalogowany (Wszystko w instrukcji if):
1. Sprawdzenie czy sesja z ciastka i z bazy są różne
2. Sprawdzenie sesja jest rózna 'brak_sesji'
3. sprawdzenie czy sesja w bazie wynosi 1 (podczas wylogowania w bazie sesja dla danego użytkownika przyjmuje wartość 1 aby zapobiec błędom, gdy ciastko nie będzie zawierało żadnych danych. Bo podczas porównywania ciastka z bazą, tutaj i tutaj będzie pusty wynik więc tak na dobrą sprawę będzie zalogowany - dlatego też tak dużo warunków)
Jeśli użytkownik jest zalogowany(wszystko w instrukcji elseif):
1. Sprawdzenie czy sesja z ciastka i z bazy są takie same
2. Sprawdzenie czy sesja z ciastka nie jest równa 'brak_sesji'
Teraz moje pytanie: Można się czegoś pozbyć, żeby było mniej kodu? Lub co ewentualnie zamienić na co, żeby było prościej i szybciej bez utraty 'jakości(?)' kodu?
Ja wiem, "program nie zrobi tego czego nie przewidzi jego Twórca", dlatego tez tak dużo warunków. testowałem już chyba wszystkie możliwe scenariusze, które mogą wystąpić i podczas logowania i podczas sprawdzania czy jest zalogowany aby wyświetlić formularz dla komentarzy.