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
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




jak już ~korro napisał 2 razy zapytanie do db nie jest jakoś strasznie wymagane swobodnie można to na jednym zrobić. po za tym kod jest podatny na sql injection.
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: 3.10.2025 - 11:10