Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sesja i md5
Forum PHP.pl > Forum > PHP
atomp3
Witam

Mam dziwny problem napisalem klase ktora obejmuje zarzadzanie uzytkowniakmi. Uzywam kodowania md5 i base64 oto kawlaek kodu odpowiedzilany za sprawdzenie uzytkownika:

  1. <?php
  2. function checkUser()
  3. {
  4. $user = $this -> fetchData($this->table,'userName','userName = "'.base64_encode($_POST[login]).'" ',false,true);
  5. $pswd = $this -> fetchData($this->table,'userPass','userPass = "'.md5($_POST[password]).'" ',false,true);
  6.  
  7.  
  8. if ($user) {
  9. if ($pswd) {
  10. return true;
  11. }
  12. return false;
  13. }
  14.  
  15.  
  16. }
  17. ?>


Nastepnie zaleznie od wyniku ustawia sesje. Po wylogowaniu unset sesja. dziala to dobrze tylko ze jakims spsobem ustawilem jako pierwsze haslo: 123 co ciekawe po zmianie hasla przez uzytkownikow haslo 123 dziala nadal. Nie wiem gdzie i skad skoro w bazie jest tylko 1 wpis, sesja zostaje usunieta po wylogowaniu szukam wszedzie i nie wiem dlaczego haslo 123 nadal dziala sad.gif
kossa
odpowiedź może być tu: fetchData - wykonujesz taką funkcję, a co tam siędzieje to już nie wiadomo bo nie ma kodu

druga sprawa tak na szybko to funkcja checkUser() ma zwracać true lub false, a jeśli nie spełniony jest warunek if ($user) to nie masz obsługi tego i nie zwróci flase bo nie wejdzie już do kontroli if ($paswd) gdzie dop. jest false, więc tu jest błąd logiczny

powinno być tak

  1. <?php
  2. if ($user) {
  3. //kod dot. hasla
  4. }
  5. else
  6. return false;
  7. ?>


Łukasz
atomp3
Faktycznie moje pytanie nie jest poprawnie sformulowane ale musialbym wtedy caly kod wkleic. Funkcja fetchData zwraca pojedynczy wynik z bazy. Blad logiczny poprawilem. Generalnie funkcja dziala, ale gdzies pamieta to 123
empathon
Przyjrzyj się swojemu kodowi, zadziała dla każdego hasła istniejącego w bazie.
U mnie np. logowanie wygląda tak:

  1. <?php
  2. $c = new Criteria();
  3. $c->add(UserPeer::LOGIN_NAME, $login);
  4. $user = UserPeer::doSelectOne($c);
  5.  
  6. //login exists
  7. if($user)
  8. {
  9. //check password
  10. if(sha1($user->getSalt().$password) == $user->getPassword())
  11. {
  12. $this->getContext()->getUser()->signIn($user, $password);
  13. return true;
  14. }
  15. }
  16. ?>
atomp3
Faktycznie totalna glupote napisalem anyway poprawilem i dziala dzieki za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.