Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Problem z logowaniem
sher
post 14.12.2014, 23:17:11
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 9.07.2014

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


  1. <?
  2. require 'connect.php';
  3. if (isset($_SESSION['id'])) {
  4. echo 'juz jestes zalogowany';
  5. }
  6. else {
  7. $startlog=$_POST['login'];
  8. if (isset($startlog)) {
  9. if (!empty($_POST['nick']) && !empty($_POST['pass'])) {
  10. $pass=hash('md5', $_POST['pass']);
  11. $nick=$_POST['nick'];
  12. $sql=mysql_query("SELECT * FROM `users` WHERE nick = '$nick'");
  13. $sql2=mysql_fetch_assoc($sql);
  14. $pass2=$sql2['pass'];
  15. if ($pass==$pass2){
  16. $id=$sql2['id'];
  17. $nick=$sql2['nick'];
  18. $_SESSION['id']=$id;
  19. $_SESSION['nick']=$nick;
  20. echo'zostales zalogowany';
  21. echo $nick;
  22. }
  23. else
  24. echo 'zle haslo lub nick';
  25. }
  26. else
  27. echo 'musisz uzupelnic wszystkie pola';
  28. }
  29. }
  30. unset($startlog);
  31. ?>


Nigdy nie pojawia się wiadomość, że jestem już zalogowany : /
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
kris2
post 15.12.2014, 12:59:13
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 15.08.2007

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


Zrób print_r tego co jest w $_POST , sprawdź tez poprzez np echo "cokolwiek"; jak interpretuje się kod gdy nie robi tego co oczekujesz.
Masz sql injection w twoim kodzie.

Ten post edytował kris2 15.12.2014, 13:01:45
Go to the top of the page
+Quote Post
fastlone
post 15.12.2014, 17:49:02
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 15
Dołączył: 3.06.2010

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


za
  1. require 'connect.php';

dodaj


--------------------
Nie bój się kliknąć
Go to the top of the page
+Quote Post
sher
post 15.12.2014, 17:58:41
Post #4





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 9.07.2014

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


Cytat(kris2 @ 15.12.2014, 12:59:13 ) *
Zrób print_r tego co jest w $_POST , sprawdź tez poprzez np echo "cokolwiek"; jak interpretuje się kod gdy nie robi tego co oczekujesz.

Sprawdziłem chyba wszystko, co się dało. Dla mnie wygląda to tak, że zmienna $_SESSION ma nadaną wartość tylko do momentu opuszczenia podstrony.


Cytat
Masz sql injection w twoim kodzie.

Na początku nie wiedziałem co to jest, ale już sobie to ogarnąłem. Wielkie dzięki dla ciebie.


@fastlone
W pliku connect.php też jest session_start(), czy robi to jakąś różnicę?
Go to the top of the page
+Quote Post
fastlone
post 15.12.2014, 18:08:05
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 15
Dołączył: 3.06.2010

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


Myślałem, że nie ma i dlatego nie zapisuje Ci sesji.
Upewnij się, że nazwy inputów w formularzu logowania pokrywają się z tymi, które sprawdzasz w kodzie php.


--------------------
Nie bój się kliknąć
Go to the top of the page
+Quote Post
sher
post 15.12.2014, 18:13:38
Post #6





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 9.07.2014

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


Właśnie z tym nie ma problemu, już wielokrotnie sprawdzałem całość "echując" zmienne w różnych częściach skryptu. Całość działa dobrze, zmienne sesji są nadane aż do czasu opuszczenia podstrony (lub zresetowania).
Go to the top of the page
+Quote Post
fastlone
post 15.12.2014, 18:18:44
Post #7





Grupa: Zarejestrowani
Postów: 95
Pomógł: 15
Dołączył: 3.06.2010

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


Czyli, jeśli dobrze rozumiem, bo kliknięciu button'a przypisuje Ci sesję, która się resetuje przy odświeżeniu strony?

Zmień również warunek
  1. if (isset($_SESSION['id']))

na
  1. if($_SESSION['id'] > 0)



Jeśli i to zawiedzie, spróbuj to dać w connect.php
  1. ini_set('session.gc_maxlifetime', 600); //ustawienie w php.ini czasu bezczynnosci sesji na 600 sekund
  2. session_name("mojasesja");
  3. session_set_cookie_params(3600,"/",$_SERVER['SERVER_NAME']); //calkowity czas trwania sesji 3600 s


Ten post edytował fastlone 15.12.2014, 18:36:11


--------------------
Nie bój się kliknąć
Go to the top of the page
+Quote Post
sher
post 16.12.2014, 21:26:28
Post #8





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 9.07.2014

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


Wciąż bez zmian. Co do tego pierwszego, myślę że warunek tutaj nie ma dużego znaczenia, nawet jak dam np.
  1. echo $_SESSION['id'];

to id się nie wyświetla.

Odświeżam, problem nadal nie rozwiązany :x

Ten post edytował sher 15.12.2014, 18:43:24
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: 14.08.2025 - 08:52