Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] sesja i md5
atomp3
post 6.08.2007, 09:44:39
Post #1





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował atomp3 6.08.2007, 09:47:18
Go to the top of the page
+Quote Post
kossa
post 6.08.2007, 10:53:58
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
atomp3
post 6.08.2007, 11:11:55
Post #3





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
empathon
post 6.08.2007, 11:23:04
Post #4





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post
atomp3
post 6.08.2007, 13:27:30
Post #5





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

Ostrzeżenie: (0%)
-----


Faktycznie totalna glupote napisalem anyway poprawilem i dziala dzieki za pomoc
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.06.2025 - 21:12