![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował adbacz 10.05.2011, 13:45:33 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 1 Dołączył: 25.03.2011 Ostrzeżenie: (10%) ![]() ![]() |
z tego co wiem to możesz połączyć sprawdzanie loginu i hasla razem (IMG:style_emoticons/default/smile.gif) chyba tekstem or (IMG:style_emoticons/default/smile.gif) tzn : ($login or $haslo) (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 548 Pomógł: 105 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
z tego co wiem to możesz połączyć sprawdzanie loginu i hasla razem (IMG:style_emoticons/default/smile.gif) chyba tekstem or (IMG:style_emoticons/default/smile.gif) tzn : ($login or $haslo) (IMG:style_emoticons/default/smile.gif) raczej and bo suma daje 1 wtedy jak jedno jest prawdziwe czyli jak poda dobry login a złe hasło to go zaloguje i odwrotnie tak samo |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
W sumie to zrobiłem teraz tak, że do sesji zapisuję userID i hash wygenerowany z hasła, loginu, adresu IP oraz aktualnej godziny z sekundami (nie jest w stanie się powtórzyć).
Tylko teraz mam problemy ze sprawdzaniem, czy ten ktoś jest zalogowany bo dość dużo sytuacji trzeba sprawdzić. Np. przy pokazywaniu formularza z komentarzem. Czy tak na oko bardziej kumatych i "dłużej piszących" taki skrypt jest... powiedzmy dobry? Czy lepiej obrać jakiś inny tor i pisać np z sesją zapisywaną w DB dla danego numeru IP? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 32 Dołączył: 21.03.2006 Skąd: Warszawa Ostrzeżenie: (20%) ![]() ![]() |
Cytat Tylko teraz mam problemy ze sprawdzaniem, czy ten ktoś jest zalogowany bo dość dużo sytuacji trzeba sprawdzić. Np. przy pokazywaniu formularza z komentarzem. Chyba najlepiej jest stworzyć funkcję / metodę w klasie i sprawdzać z np. $user->isLogged() zwracającą true / false.
Ten post edytował konole 11.05.2011, 17:43:52 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak konole, ale ta funkcja nie działa w CI. Najlepsze jest to, że działa w osobnym pliku *.php.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 22:23 |