Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Dziura w logowaniu, Dziura w logowaniu
Kalysto
post 13.05.2011, 18:37:33
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 16.04.2011
Skąd: Chełm

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


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.
Go to the top of the page
+Quote Post
kadlub
post 13.05.2011, 18:40:56
Post #2





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


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}


Ten post edytował kadlub 13.05.2011, 18:45:29
Go to the top of the page
+Quote Post
Kalysto
post 13.05.2011, 18:47:33
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 16.04.2011
Skąd: Chełm

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


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".

Ten post edytował Kalysto 13.05.2011, 18:50:32
Go to the top of the page
+Quote Post
kadlub
post 13.05.2011, 19:04:53
Post #4





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


a gdzie masz

na początku pliku

Ten post edytował kadlub 13.05.2011, 19:05:12
Go to the top of the page
+Quote Post
Kalysto
post 13.05.2011, 19:07:41
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 16.04.2011
Skąd: Chełm

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


Rozwiązałem problem sam. Proszę o zamknięcie tematu.

Ten post edytował Kalysto 13.05.2011, 22:56:08
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: 13.06.2025 - 09:22