Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Problem z logowaniem
Forum PHP.pl > Forum > Przedszkole
sher
  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 : /
kris2
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.
fastlone
za
  1. require 'connect.php';

dodaj
sher
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ę?
fastlone
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.
sher
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).
fastlone
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
sher
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
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.