Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Logowanie
Bryla
post 26.07.2010, 16:38:15
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 16.01.2010

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


Witam, napisałem następujący skrypt logowania:

index.html
  1. <b>LOGOWANIE:</b>
  2. <form method="post" action="index2.php">
  3. <p>Wpisz nazwę użytkownika:
  4. <input type="text" name="user">
  5. </p>
  6. <p>Wpisz hasło:
  7. <input type="password" name="pass">
  8. </p>
  9. <input type="submit" name="Submit" value="Logowanie">
  10. </form>


index2.php
  1. <?php
  2. $_POST['user'] = $username;
  3. $_POST['pass'] = $userpass;
  4. $_SESSION['authuser'] = 0;
  5.  
  6. //połączenie z bazą danych
  7. $connect = mysql_connect("host", "nazwa_usera", "hasło") or die
  8. ("Sprawdź połączenie z bazą danych!");
  9.  
  10. mysql_select_db("db1074123");
  11.  
  12. //wybór tabeli i wyciągnięcie danych
  13. $query = "SELECT user_id, user_name, user_password
  14. FROM user
  15. WHERE user_name = '$username' AND user_password = '$userpass' ";
  16.  
  17. $result = mysql_query($query)
  18.  
  19. //przypisanie zmiennych
  20.  
  21. $row = mysql_fetch_array($result);
  22.  
  23. $user = $row['user_name'];
  24. $pass = $row['user_password'];
  25.  
  26.  
  27. //sprawdzenie zawartości pól
  28. if (($username == $user) and
  29. ($userpass == $pass)) {
  30. $_SESSION['authuser'] = 1;
  31. } else {
  32. echo "Przepraszamy, nie masz uprawnień do przeglądania tej strony.";
  33. exit();
  34. }
  35. ?>


I teraz mam pewien problem. Gdy wchodzę od razu do index2.php to strona mi działa normalnie zamiast pokazać: "Przepraszamy, nie masz uprawnień do przeglądania tej strony.". Czyli to logowanie nie do końca działa, a nawet w ogóle nie działa. Siedzę już nad tym kilka godzin i nigdzie nie widzę błędu.

Na każdej podstronie mam warunek sprawdzający czy użytkownik jest zalogowany:
  1. <?
  2.  
  3. if ($_SESSION['authuser'] != 1) {
  4. echo "Przepraszamy, nie masz uprawnień do przeglądania tej strony!";
  5. exit();
  6. }
  7. ?>

To też nie działa (wchodzę od razu na podstronę bez logowania) mimo tego, że w pliku index2.php ustawiłem $_SESSION['authuser'] na 1.

Z góry dzięki za pomoc smile.gif
Go to the top of the page
+Quote Post
!*!
post 26.07.2010, 16:44:56
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Nie potrzebnie na początku ustawiasz sesję na 0, a poza tym po co przypisujesz zmienne po sprawdzeniu w bazie? Dodatkowo sprawdź co wyświetla sesja.

Skoro ustawiasz w index2.php sesje na zero na początku to jak chcesz ją później zmienić? Zapętlasz to sobie i dlatego nie możesz się zalogować.

Ten post edytował !*! 26.07.2010, 16:46:23


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
muk4
post 26.07.2010, 16:47:47
Post #3





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


  1. $_POST['user'] = $username;
  2. $_POST['pass'] = $userpass;

nie powinno być tak?
  1. $username = $_POST['user'] ;
  2. $userpass = $_POST['pass'] ;


i dodaj to po ustawieniu 1;
  1. $_SESSION['authuser'] = 1;
  2. echo 'Zalogowany'; // new
  3. var_dump($_SESSION); // new


I napisz co pokazuje po zalogowaniu.

Ten post edytował muk4 26.07.2010, 16:52:38
Go to the top of the page
+Quote Post
Bryla
post 26.07.2010, 16:52:34
Post #4





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 16.01.2010

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


Cytat(!*! @ 26.07.2010, 17:44:56 ) *
Skoro ustawiasz w index2.php sesje na zero na początku to jak chcesz ją później zmienić?


Sprawdzam to przez porównanie loginu i hasła z bazy danych z danymi wpisanymi w index. Jeżeli się zgadzają to ustawiam na 1.

Dzięki muk4, działa smile.gif
Teraz tylko został problem z tą sesją.


@muk4:
Pokazało: Zalogowanyarray(1) { ["authuser"]=> int(1) }

Ten post edytował Bryla 26.07.2010, 16:57:29
Go to the top of the page
+Quote Post
muk4
post 26.07.2010, 17:02:58
Post #5





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Zrób podstronę z takim kodem:
  1. var_dump($_SESSION);
  2. if ($_SESSION['authuser'] <> 1) {
  3. echo "Przepraszamy, nie masz uprawnień do przeglądania tej strony!";
  4. exit();
  5. }
  6. echo 'Mam uprawnienia';


Ten post edytował muk4 26.07.2010, 17:03:21
Go to the top of the page
+Quote Post
!*!
post 26.07.2010, 17:03:54
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Popatrz na ten kod może Ci się przyda.

Nie ustawiaj sesji na 0 bo nie ma to sensu. Ustaw sesję na 1 gdy login i hasło się zgadzają, ale nie przypisuj ich do zmiennych, zrób to bezpośrednio przy odczycie z bazy (patrz link wyżej). I jak sprawdzisz sesję czy jest inna niż 1, jeśli nie, to ją zniszcz.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Bryla
post 26.07.2010, 17:12:09
Post #7





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 16.01.2010

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


Już działa, dzięki panowie smile.gif
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: 19.07.2025 - 20:29