Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z logowaniem - baaardzo dziwny
lukpam
post 2.06.2005, 22:57:24
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 2.06.2005

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


Już troszkę poświęciłem swego czasu na zabawy ze skryptami w php, ale to już mnie przerosło. Odnoszę wrażenie, że przegrałem z czymś co sam stworzyłem. Ale po kolei. To jest mój skrypt logowania się na stronie:

  1. <?php
  2.  
  3. // Wyciagamy dane do logowanie z cookie, jesli tam sa
  4. $ciastko=explode(&#092;";\",$_COOKIE[logowanie]);
  5.  
  6.     // jesli dane do logowania sa w cookie
  7.     if ($_POST[spr_form] != 'tak' and $ciastko[2] == 'on' and $_SESSION[dodano] != 'tak')
  8.     {
  9.     $_SESSION['login'] = $ciastko[0];
  10.     $_SESSION['pass'] = $ciastko[1];
  11.     $_SESSION['wizyta'] = $ciastko[2];
  12.     }
  13.  
  14.     // je&para;li danych do logowania nie ma w cookie
  15.     elseif ($_POST[spr_form] == 'tak' and $_SESSION[dodano] != 'tak')
  16.     {
  17.     $pass_szyfr = md5($_POST[pass]); // Szyfrujemy hasło
  18.  
  19.     $_SESSION['login'] = $_POST[login];
  20.     $_SESSION['pass'] = $pass_szyfr;
  21.     $_SESSION['wizyta'] = $_POST[wizyta];
  22.     }
  23.  
  24. // Sprawdzamy poprawność danych użytkowanika w bazie
  25. $baza->query(&#092;"SELECT COUNT(user_id) AS count, user_id, username FROM uzytkownicy WHERE username LIKE '$_SESSION[login]' AND user_password LIKE '$_SESSION[pass]' AND akt!=0 GROUP BY user_id\", \"y\");
  26. $user = $baza->query_array;
  27.  
  28.     if ($user[count] == '0') // logowanie nieudane
  29.     {
  30.         $ok_logowanie = 'zle'; 
  31.     }
  32.     elseif ($user[count] == '1') // logowanie udane
  33.     {
  34.         $ok_logowanie = 'ok';
  35.  
  36.         setcookie (&#092;"logowanie\", \"$_SESSION[login];$_SESSION[pass];$_SESSION[wizyta]\", time()+31536000, \"/\");
  37.     }
  38.  
  39. ?>



Najwazniejszy w tym wszystkim jest błąd (?) przy zapytaniu do bazy. Jest tam kolumna 'akt', w której zapisane jest czy użytkownik ma już aktywowane konto (wartość: 1), czy też jeszcze nie (wartość: 0). Gdy sprawdzam u siebie na localhoście, na serwerze wszystko niby jest ok, ale gdy sprawdziłem okazało się, że spora liczba użytkowników loguje się choć mają nieaktywowane konta! W kolumnie 'akt' mają wartość '0' i mimo to logują się choć w zapytaniu do bazy jest wyraźnie zapisane: akt!=0.

Najgorsze jest to, że ja nie mogę określić dlaczego np. ja mając zapisane
w 'akt' wartość '0' nie mogę się zalogować, a ktoś inny może! Przecież
wszystko jest wykonywane po stronie serwera, więc powinno działać jednakowo dla wszystkich :/

Ja już padam przy tym. Troszkę to długie i większości pewnie nawet nie
będzie chciało się czytać, ale byłbym baaaardzo wdzięczny za pomoc...

Ten post edytował lukpam 2.06.2005, 22:59:17
Go to the top of the page
+Quote Post
vala
post 3.06.2005, 01:41:46
Post #2





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 12.01.2005

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


po przeczytaniu tego $_COOKIE[logowanie] dalej juz mi sie nie chcialo patrzec:)
a nie powinno byc $_COOKIE['logowanie'] ?
to samo $_POST i $_GET


--------------------
Warsztat: Easy PHP 1.7:Apache 1.3.27|PHP 4.3.3|PHPMYADMIn 2.5.3|MYSQL 4.0.15
Go to the top of the page
+Quote Post
Ociu
post 3.06.2005, 11:08:44
Post #3





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




http://php.pl/artykuly/dla_poczatkujacych/...ch_programistow
Go to the top of the page
+Quote Post
lukpam
post 3.06.2005, 12:34:29
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 2.06.2005

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


ok, dzieki za ważną radę. Tam gdzie się dało to pozmieniałem, ale jak wstawic kolejne apostrofy np do takiego kodu:
  1. <?php
  2.  
  3. &#092;"$baza->query(\"SELECT COUNT(user_id) AS count, user_id, username FROM uzytkownicy WHERE username LIKE '$_SESSION[login]' AND user_password LIKE '$_SESSION[pass]' AND akt!=0 GROUP BY user_id\", \"y\");
  4.  
  5. ?>

Przecież gdy wstawie $_SESSION['login'] to wywali mi błąd, co jest oczywiste...


Błąd musi tkwić w tym zapytaniu, bo opisany przeze mnie problem wciąż istniejenie :/

Ten post edytował lukpam 3.06.2005, 12:35:31
Go to the top of the page
+Quote Post
czachor
post 3.06.2005, 12:42:33
Post #5





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


  1. <?php
  2. $baza->query('SELECT COUNT(user_id) AS count, user_id, username FROM uzytkownicy WHERE username LIKE '' . $_SESSION['login'] . '' AND user_password LIKE '' . $_SESSION['pass'] . '' AND akt != '0' GROUP BY user_id', 'y);
  3. ?>

zamień "& #092;" na "\"... nie wiem, czego zmienia mi to blink.gif

Ten post edytował czachor 3.06.2005, 12:44:05


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
Go to the top of the page
+Quote Post
Ociu
post 3.06.2005, 13:12:41
Post #6





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  1. <?php
  2. $baza->query(&#092;"SELECT COUNT(user_id) AS count, user_id, username FROM uzytkownicy WHERE username LIKE '\".$_SESSION['login'].\"' AND user_password LIKE '\".$_SESSION['pass'].\"' AND akt!=0 GROUP BY user_id\", \"y\");
  3. ?>
Go to the top of the page
+Quote Post
lukpam
post 3.06.2005, 13:18:15
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 2.06.2005

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


Ok, wszystko poprawione zgodnie z waszymi sugestiami, a mimo to problem wciąż istnieje...
Go to the top of the page
+Quote Post
cim
post 3.06.2005, 15:42:31
Post #8





Grupa: Zarejestrowani
Postów: 208
Pomógł: 28
Dołączył: 9.08.2004
Skąd: Stargard

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


moze to cos da...
  1. <?php
  2. $baza->query(&#092;"SELECT COUNT(user_id) AS count, user_id, username FROM uzytkownicy WHERE username = '\".$_SESSION['login'].\"' AND user_password = '\".$_SESSION['pass'].\"' AND akt>0 GROUP BY user_id\", \"y\");
  3. ?>


--------------------
errare humanum est
Go to the top of the page
+Quote Post
lukpam
post 3.06.2005, 16:27:27
Post #9





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 2.06.2005

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


Nic z tego...

Wygląda na to, że zapytanie jest ok, więc błąd musi tkwić gdzieś w cookie.

Zauważyłem coś bardzo dziwnego. Często (ale nie zawsze!) w przypadku osób, które logują się mimo, iż mają akt=0 występuje niezrozumiała dla mnie sytuacja. User używa jednego loginu, ale w bazie zapisują się logowania jeszcze innych! Widać to po dacie ostatniego logowania - jest identyczna co do jednej sekundy. Np. zaloguje sie Kamil05, a jednoczesnie w bazie zapisane jest logowanie Kamil15! Podobnie raul87 i RAUL27, czy konradp i konrad8. Przykładów mogę wymienić jeszcze kilka.

Teraz to już całkiem zgłupiałem :|
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: 19.06.2025 - 03:01