Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dziura w logowaniu
Forum PHP.pl > Forum > Przedszkole
Kalysto
Witam. Udało mi sie w końcu stworzyć system rejestracji i logowania po swojemu tak jak chciałem. Lecz niestety mam małą dziure w kodzie, której nie mam pojęcia jak zatkać. Otóż problem polega w tym iż mam plik index.php w którym jest formularz i przesyła go do login.php gdzie są sprawdzane dane poprawności z danymi z bazy i następnie znów przeniesienie do index.php. To wszystko się dzieje pod warunkiem że dane w formularzu zostały poprawnie wypełnione.
Problem otóż leży w tym iż gdy sesja jest nieaktywna (brak logowania) i wchodząc od razu do pliku login.php mam tam coś w stylu "Zostałeś zalogowany...." bez wpisywania żadnych danych i przenosi mnie do index.php gdzie jestem zalogowany jako anonimowy user? Nie wiem czy to tak nazwać bo to jakby pusta sesja i user który nie istnieje.

Oto kod, może on być śmieszny dla niektórych ale cóż dopiero zaczynam:
  1. <?
  2. require("includes/header.php");
  3.  
  4.  
  5.  
  6. $user = $_POST['user'];
  7. $pass = md5($_POST['pass']);
  8.  
  9. $query = "SELECT * FROM konta WHERE user='$user' AND pass='$pass'";
  10. $result = mysql_query($query) or die("Ehhh error 0.o");
  11.  
  12. $row = mysql_fetch_array ($result, MYSQL_NUM);
  13. if ($result) {
  14. print '<center>Zostałeś zalogowany! Za chwile zostaniesz przeniesiony na <a href="index.php">strone główna</a>.</center>';
  15. print "<meta http-equiv=\"refresh\" content=\"2; url=index.php\">";
  16. $_SESSION['login'] = 1;
  17. if ($row) {
  18. $_SESSION['id'] = $row[0];
  19. $_SESSION['user'] = $row[1];
  20. $_SESSION['email'] = $row[3];
  21. $_SESSION['admin'] = $row[4];
  22. $_SESSION['mod'] = $row[5];
  23. }
  24. } else {
  25. print "Złe dane";
  26. $_SESSION['login'] = 0;
  27. }
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. ?>



Proszę o pomoc, co jest błędem i jak załatać tą dziurę by tak się nie działo i gdy sesja jest nieaktywna wyświetlało zwykły formularz logowania.
kadlub
poczytaj o isset
http://php.net/manual/en/function.isset.php
  1. if(isset($_SESSION['login'])){
  2. tu jak już jest zalogowany}
  3. else
  4. { tu kod jak nie jest}
Kalysto
Czytałem o isset i jest on umieszczony w headerze. Lecz niestety nie działa mi gdy jest zamknieta sesja. Próbowałem też tutaj dodawać coś w stylu:

  1. if ($_SESSION['login'] == 1) {


....(skrypt od sprawdzania, to co w pliku login.php)

i na końcu

  1. } else {
  2. print "Brak dostepu";
  3. }


Ale przy próbie logowania blokuje sesje i ciągle wyświetla mi właśnie "Brak dostępu".
kadlub
a gdzie masz

na początku pliku
Kalysto
Rozwiązałem problem sam. Proszę o zamknięcie tematu.
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.