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

Posty w temacie


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 Aktualny czas: 21.08.2025 - 18:29