Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Skrypt logowania na jednej stronie
Forum PHP.pl > Forum > PHP
prafgon
Witam. Ostatnio postanowiłem stworzyć system logowania na mojej stronie. Po przeczytaniu paru poradników oraz wsparciu ze strony manuala stworzyłem prosty skrypcik. Skrypt działa i ludzie normalnie mogą się logować, lecz problem w tym, że okienka logowania znajdują się na jednej stronie, a po zalogowaniu uzytkownik przechodzi na inna strone, gdzie widzi wiadomosc 'Witaj nick' itp. Chcialbym przerobic kod tak by wszystkie czynnosci odbywaly sie w jednym pliku index.php. Probowalem wlasnorecznie przerobic skrypt, lecz niestety nic z tego nie wychodzi.

Oto bardzo uproszczona wersja przerobionego kodu, z ktorego usunalem formularz logowania, ktory normalnie znajduje sie zamiast tekstu 'zaloguj sie':
  1. $login = $_POST['login'];
  2. $password = $_POST['pswd'];
  3.  
  4.  
  5. $haslo = "1";
  6. $nick = "2";
  7.  
  8. if ( $password == $haslo && $login == $nick) {
  9. $_SESSION['phplogin'] = true;
  10. echo 'witaj';
  11. }
  12. else if (!isset($_SESSION['phplogin'])
  13. || $_SESSION['phplogin'] !== true) {
  14. echo'zaloguj sie';
  15. }
  16.  
  17. else {
  18. echo 'nic';
  19. }


Problem w tym, ze nie wywala tekstu 'witaj' ani 'zaloguj sie'. Zamiast tego otrzymuje tekst 'nic'.

Mam nadzieje, ze opisalem swoj problem wystarczajaco jasno.

Pozdrawiam,
Prafgon
mhw
Hm, może pokaż ten formularz, bo ten kod, który podałeś u mnie działa.
prafgon
Witam. Okazało się, że nie chciał się u mnie odpalić, ponieważ sesja była już zapamiętana z wcześniejszych wizyt, a zapomniałem się wylogować dlatego ciągle pokazywało mi, że jestem zalogowany (nawet nie wiecie jak mi wstyd..).

Poszperałem sobie w tym czasie na internecie i przerobiłem swój kod na takie coś:
  1. <?php
  2. $login = $_POST['login'];
  3. $password = $_POST['pswd'];
  4.  
  5.  
  6. include 'config.php';
  7.  
  8.  
  9. $zapytanie = "SELECT `id`,`nick`,`haslo`,`email` FROM `e_mem` WHERE nick='$login'";
  10. $idzapytania = mysql_query($zapytanie);
  11.  
  12.  
  13.  
  14. while ($row = mysql_fetch_row($idzapytania))
  15. {
  16. if ( $password == $row[2] && $login == $row[1]) {
  17. $_SESSION['logz'] = true;
  18.  
  19. }
  20. }
  21.  
  22.  
  23.  
  24. if (isset($_SESSION['logz']) AND !empty($_SESSION['logz']))
  25. {
  26.  
  27. include 'logged.php';
  28.  
  29. } else {
  30. include 'unlogged.php';
  31.  
  32. }
  33.  
  34. ?>
  35.  


Kod działa bez zarzutu. Jedynym problem, nad którym teraz klęczę i się męczę to wykorzystanie nicku/loginu użytkownika wewnątrz logged.php. Próbowałem oplec część "if (isset.." pętlą while żeby przypisać $row[1] jako login, lecz po odpalenia takiego kodu strona jest pusta, nic nie jest wyświetlone.

Pozdrawiam,
Prafgon
DiH
A dlaczego nie stworzysz zmiennej:
Kod
$_SESSION['user'] = $_POST['login'];
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.