Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]problem z logowaniem różnch userów
agata
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.12.2009

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


Dzień dobry.

Mam problem z logowaniem użytkowników z różnymi rolami.

Napisałam coś takiego, gdy już user zostanie znaleziony w bazie to zależnie od roli jaką posiada powinien zostać przekierowany do swojego panelu i powinna zostać utworzona dla niego sesja. Nie wiem gdzie mam błąd i dlaczego tak a nie inaczej. Proszę o pomoc i wyjaśnienie jak powinnam to zrobić.

EDIT1:
Problem polega na tym że użytkownik nie zostaje przekierowany. User zostaje ponownie przekierowany do formularza gdzie dostaje komunikat o błędnych danych logowania


  1. <?php
  2. require_once('db_connect.php');
  3.  
  4.  
  5.  
  6. function login($login, $haslo)
  7. {
  8. $db_connect = new Db_connect();
  9.  
  10. $haslo=sha1($haslo);
  11. $zapytanie = "SELECT Login, Haslo FROM Users WHERE Login ='$login' and Haslo ='$haslo'";
  12. $wynik = mysql_query($zapytanie) or die (mysql_error('Nie można wykonać zapytania'));
  13.  
  14.  
  15.  
  16. $ile = mysql_num_rows();
  17.  
  18. if ( $ile > 0 )
  19. {
  20. $query = mysql_query ("Select Rola From Users Where Rola='$rola'") or die (mysql_error('nie mogę wyciągnąć roli użytkownika'));
  21. if ($rola == 'administrator')
  22. {
  23. header ('Location: admin/admin_control_panel.php');
  24. $_SESSION['rola'] = $rola;
  25. }
  26. else
  27. if ($rola == 'kierownik')
  28. {
  29. header ('Location: boss/boss_control_panel.php');
  30. $_SESSION['rola'] = $rola;
  31. }
  32. else
  33. if ($rola == 'pracownik')
  34. {
  35. header ('Location: workman/workman_control_panel.php');
  36. $_SESSION['rola'] = $rola;
  37. }
  38.  
  39. else
  40. {sleep(3);
  41. $blad="Podano błędne dane logowania";
  42. // kombinacja: identyfikator i hasło dostępu jest nieprawidłowa
  43. header('Location: index.php?blad=1');
  44. }
  45. }
  46. }
  47. ?>


Tutaj połączenie z bazą
  1. <?php
  2.  
  3. class Db_connect
  4. {
  5.  
  6. function __construct()
  7. {
  8. $host = 'localhost';
  9. $user = 'root';
  10. $password = 'xxx';
  11. $db = 'Sklep';
  12.  
  13. $this->db = mysql_connect($host, $user, $password, $db) or die (mysql_error('Nie mogę nawiązać połaczenia'));
  14. mysql_select_db($db, $this->db) or die (mysql_error('Nie mogę połaczyć z bazą danych'));
  15. mysql_query("Set Names 'utf8'");
  16. mysql_query("Set collation_connection = utf8_polish_ci");
  17.  
  18. }
  19.  
  20. public function closing ()
  21. {
  22. $close =$this->db;
  23. mysql_close($close);
  24. }?>


user wypełnia zwykły formularz
  1. <form action="" method="post" accept-charset="utf-8">
  2. <tr><td>Login</td><td><input type="text" class="text" name="login" /></td></tr>
  3. <tr><td>Hasło</td><td><input type="password" class="text" name="haslo" /></td></tr>
  4. <tr><td><input type="submit" value="Zaloguj"/></td></tr>
  5. <tr><td></td><td><?php
  6. if(isset($_GET['blad']))
  7. {echo "<font color=red>Podano błędne dane !</font>";}
  8. ?>
  9. </td></tr>
  10.  
  11. </table></form>


Ten post edytował agata 4.12.2009, 15:22:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
agata
post
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.12.2009

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


witam.

Po walce udało mi się w końcu rozwiązać ten problem. Dzięki wszystkim za pomoc uwagi okazały się pomocne, chociaż zrobiłam to po swojemu.
To kod który działa poprawnie, jeśli jednak ktoś zauważy jakieś błędy lub lepsze rozwiązania proszę o uwagi.
  1. <?php
  2. require_once('db_connect.php');
  3.  
  4.  
  5.  
  6. function login($login, $haslo)
  7. {
  8. $db_connect = new Db_connect();
  9.  
  10. $haslo=sha1($haslo);
  11. $zapytanie = "SELECT Login, Haslo FROM Users WHERE Login ='$login' and Haslo ='$haslo'";
  12. $wynik = mysql_query($zapytanie) or die (mysql_error('Nie można wykonać zapytania'));
  13. $ile = mysql_fetch_row($wynik);
  14.  
  15. $zapytanie = "SELECT rola FROM Users WHERE Login ='$login' and Haslo ='$haslo'";
  16. $wynik = mysql_query($zapytanie) or die (mysql_error('Nie można wykonać zapytania'));
  17. $row = mysql_fetch_array($wynik);
  18.  
  19.  
  20. if ( $ile > 0 )
  21. {
  22. $_SESSION['rola'] = $row['rola'];
  23.  
  24. if ($_SESSION['rola'] == 'administrator')
  25. {
  26. header ('Location: admin/admin_control_panel.php');
  27.  
  28. }
  29. else
  30. if ($_SESSION['rola'] == 'kierownik')
  31. {
  32. header ('Location: boss/boss_control_panel.php');
  33.  
  34. }
  35. else
  36. if ($_SESSION['rola'] == 'pracownik')
  37. {
  38. header ('Location: workman/workman_control_panel.php');
  39.  
  40. }
  41.  
  42. else
  43. {sleep(3);
  44. $blad="Podano błędne dane logowania";
  45. // kombinacja: identyfikator i hasło dostępu jest nieprawidłowa
  46. header('Location: index.php?blad=1');
  47. }
  48. }
  49. }
  50. ?>


Jeszcze raz dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)
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: 13.10.2025 - 20:55