Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Problem z logowaniem dla admina, pracownika i zwykłego usera
artur2233
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 4.03.2012
Skąd: Kielce

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


Witam, jestem początkujący i uczę się PHP.
Potrzebuję zrobić logowanie dla różnych grup użytkowników. Używając szukajki znalazłem taki temat KLIK lecz nie pomógł mi za bardzo, bo wcześniej już miałem to zrobione.
W bazie mam kolumnę 'user_role' i tam nadane są numery określające grupę użytkownika. Jednak przy logowaniu jakby nie zczytuje roli użytkownika, nie potrafi tego rozdzielić. "User_role" jest typu int. Próbówałem varcharem, kombinowałem brać dane z tej kolumny w cudzysłów, apostrof. W zależności od wyboru logowało mnie gdzie indziej wciąż nie rozróżniając roli.
Mam nadzieję, że jasno opisałem swój problem.
Z góry dziękuję za wszelką pomoc i objaśnienia.

edit: 0 - dla zywkłego usera, 1 - dla pracownika, 2 - dla admina.
Jeśli ustawię wartość 0:
  1. if ($_SESSION['user_role']==0)
  2. {
  3. header('Location: userlist.php');
  4. } else { header('Location: index.php'); }

to loguje mnie do userlist.php, a każda inna wartość przenosi do index.php, niezależnie kto sięloguje. W bazie widzę, że role >0 są nadane.
Po id loguje poprawnie. Ale to wadzi, żeby zrobić logowanie dla trzech grup użytkowników.


  1. <?php
  2. include 'config.php';
  3. db_connect();
  4.  
  5. // sprawdzamy czy user nie jest przypadkiem zalogowany
  6. if(!$_SESSION['logged']) {
  7. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  8. if(isset($_POST['name'])) {
  9. // filtrujemy dane...
  10. $_POST['name'] = clear($_POST['name']);
  11. $_POST['password'] = clear($_POST['password']);
  12. // i kodujemy hasło
  13. $_POST['password'] = codepass($_POST['password']);
  14.  
  15. // sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
  16. $result = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1");
  17. if(mysql_num_rows($result) > 0) {
  18. // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
  19. $row = mysql_fetch_assoc($result);
  20. $_SESSION['logged'] = true;
  21. $_SESSION['user_id'] = $row['user_id'];
  22. $_SESSION['user_role'] = $row['user_role'];
  23.  
  24.  
  25. if ($_SESSION['user_role']==2) //admin
  26. {
  27. header('Location: userlist.php');
  28. } else { header('Location: index.php'); }
  29.  
  30. } else {
  31. echo '<p>Podany login i/lub hasło jest nieprawidłowe.</p>';
  32. header("Refresh: 5; url=login.php");
  33. }
  34. } else {
  35. $_POST['name'] = '';
  36. $_POST['password'] = '';
  37. $_POST['user_role'] = '';
  38. }
  39.  
  40. // wyświetlamy komunikat na zalogowanie się
  41.  
  42. echo '<form method="post" action="login.php">
  43. <p>
  44. Login:<br>
  45. <input type="text" value="'.$_POST['name'].'" name="name">
  46. </p>
  47. <p>
  48. Hasło:<br>
  49. <input type="password" value="'.$_POST['password'].'" name="password">
  50. </p>
  51. <p>
  52. <input type="submit" value="Zaloguj">
  53. </p>
  54. </form>';
  55.  
  56. } else {
  57. echo '<p>Jesteś już zalogowany, więc nie możesz się zalogować ponownie.</p>
  58. <p>[<a href="index.php">Powrót</a>]</p>';
  59. }
  60.  
  61.  
  62. db_close();
  63. ?>


Ten post edytował artur2233 18.12.2012, 20:25:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




"SELECT `user_id` FROM
w zapytaniu pobierasz tylko user_id a potem w kodzie ni stąd nie zowąd próbujesz pobrać inne pola z wiersza..... skoro chcesz pobrać coś innego, to i to coś innego też w zapytaniu masz pobrać, czyli
"SELECT `user_id`,`user_role` FROM

I włącz wyświetlanie wszystkich błędów to od razu byś zobaczył takie banały.

Cytat
Ja nie kombinowałem nigdy z umieszczaniem jednej linijki kodu w innym pliku niż ten, który aktualnie wykonuję.
To że Ty trzymasz się jakiejś dziwnej zasady nie znaczy że jak ktoś inny robi poprawnie ale inaczej niż Ty to że to jest źle
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 00:48