Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Podział użytkowników portalu
Forum PHP.pl > Forum > Przedszkole
andrzejlechniak
Hej forumowicze.
Mam portal i chcę mieć trzy rangi użytkowników: administrator, moderator i użytkownik. Chodzi mi o to jak zapisać w logowaniu, że ten, kto się loguje ma taką a taką rangę.
daros17
Nie wiem czy dobrze Cię zrozumiałem, ale dodaj takie coś. Czy o to Ci chodziło? Oczywiście musisz mieć połączenie z bazą i utworzona kolumnę status. Na początku dodaj session_start();

  1. if ($_SESSION[status]==admin){
  2. echo 'jestem admin';
  3. }
  4. elseif ($_SESSION[status]==mod)
  5. {
  6. echo 'jestem moderator';
  7. }
  8. elseif ($_SESSION[status]==user)
  9. {
  10. echo 'jestem user';
  11. }
andrzejlechniak
Utworzyłem tabeleę 'ranga' - tinyint, gdzie 2 to administrator, 1 to moderator a 0 zwykły użytkownik. I teraz mam taki kod:

  1. if($_SESSION["logged"] == "tak")
  2. {
  3. if($_SESSION['ranga'] == 2)
  4. {
  5. echo 'jesteś administratorem';
  6. }
  7. else if($_SESSION['ranga'] == 1)
  8. {
  9. echo 'Jesteś moderatorem';
  10. }
  11. else {
  12. echo 'Nie jesteś administratorem ;-(';
  13. }
  14.  
  15. }


Problem w tym, że zawsze jak się loguje (choć mam jeden rekord jako administrator) to wychodzi mi: Nie jesteś administratorem!
daros17
Podaj cały kod logowania
andrzejlechniak
Proszę bardzo. Oto część strony odpowiedzialna za logowanie. Dodam, że mam na początku strony session_start():

  1. if($_GET["wyloguj"] == '1') $_SESSION["logged"] = "nie";
  2.  
  3. if($_SESSION["logged"] != "tak")
  4. {
  5. if (empty($_POST))
  6. {
  7. echo '<form name="form1" action="index.php?id=konto" method="Post" >
  8. <div class="log_main">
  9. <div class="log_form">&rsaquo; LOGOWANIE DO SERWISU</div>
  10. <div class="log_dane">
  11. <div class="log_form">Użytkownik: <input name="myusername" type="text" id="myusername"></div>
  12. <div class="log_form">Hasło: <input name="mypassword" type="password" id="mypassword"></div>
  13. <div class="log_form">&nbsp;
  14. <input type="submit" name="Submit" value="Zaloguj" title="zaloguj się">
  15. </div>
  16. </div>
  17. </div>
  18. </form>';
  19. }
  20. else
  21. {
  22. $myusername=$_POST['myusername'];
  23. $mypassword=$_POST['mypassword'];
  24.  
  25. //Ochrona przeciw SQl injection
  26. $myusername = stripslashes($myusername);
  27. $mypassword = stripslashes($mypassword);
  28. $myusername = mysql_real_escape_string($myusername);
  29. $mypassword = mysql_real_escape_string($mypassword);
  30.  
  31. $sql="SELECT * FROM xxx WHERE login='$myusername' and password='$mypassword'";
  32. $result=mysql_query($sql);
  33.  
  34. $count=mysql_num_rows($result);
  35. }
  36.  
  37. if($count==1){
  38. $_SESSION["logged"] = "tak";
  39. $_SESSION["username"] = $myusername;
  40. }
  41. else {
  42. return "Błędny login lub hasło";
  43. }
  44. }
  45.  
  46. if($_SESSION["logged"] == "tak")
  47. {
  48. if($_SESSION['ranga']==2)
  49. {
  50. echo 'jesteś administratorem';
  51.  
  52. }
  53. else if($_SESSION['ranga']==1)
  54. {
  55. echo 'Jesteś moderatorem';
  56. }
  57. else
  58. {
  59. echo 'Nie jesteś administratorem ;-(';
  60. }
  61.  
  62. }
daros17
Możesz zrobić np tak:

  1. while ($row = mysql_fetch_assoc($connection)) { //petla, aby pobrac wyniki
  2.  
  3.  
  4. $_SESSION['login'] = $row['login']; //zapisujemy login z bazy do sesji
  5. $_SESSION['status'] = $row['status'];//zapisujemy status z bazy do sesji
  6.  
  7. echo 'Zostałes poprawnie zalogowany <b>'.$_SESSION['login'].'</b>!';
  8.  
  9.  
  10.  
  11. if($_SESSION['status']==2)
  12. {
  13. echo 'jesteś administratorem';
  14.  
  15. }
  16. else if($_SESSION['status']==1)
  17. {
  18. echo 'Jesteś moderatorem';
  19. }
  20. else
  21. {
  22. echo 'Nie jesteś administratorem ;-(';
  23. }
andrzejlechniak
Niestety wciąż działa tak samo z tym wyjątkiem, że każdy jest administratorem worriedsmiley.gif
daros17
Spróbuj tak, a następnie przekształć swój skrypt lub skorzystaj z tego, ale brakuje tutaj kilku rzeczy np zabezpieczeń, czy login oraz hasło się zgadzają.
  1.  
  2. <form action="" method="POST">
  3. Login: <input type="text" name="login" value="login" ><br />
  4. Hasło: <input type="text" name="pass" value="pass"><br />
  5. <input type="submit" name="submit" value="Zaloguj sie">
  6.  
  7. </form>
  8. <?php
  9. include $_SERVER['DOCUMENT_ROOT'].'/xxx/xxx.php';
  10.  
  11.  
  12. if(isset($_SESSION['login'])) { //jesli istnieje sesja z loginem
  13. echo 'Jesteś już zalogowany jako<b> '.$_SESSION['login'].'</b>!';
  14. } else { //jesli nie ma sesji z loginem
  15.  
  16.  
  17.  
  18.  
  19. if (isset($_POST['submit']))
  20.  
  21. {
  22. $login= ($_POST['login']);
  23. $pass= ($_POST['pass']);
  24. }
  25.  
  26. if (empty($login))
  27. {
  28. echo 'Nie podales loginu';
  29. }
  30. elseif (empty($pass))
  31. {
  32. echo 'Nie podales hasla';
  33. }
  34. else
  35. {
  36. $connection = mysql_query("select * from users WHERE login ='$login' AND pass ='$pass'")or die (mysql_error());
  37.  
  38. while ($row = mysql_fetch_assoc($connection)) { //petla, aby pobrac wyniki
  39.  
  40.  
  41. $_SESSION['login'] = $row['login']; //zapisujemy login z bazy do sesji
  42. $_SESSION['status'] = $row['status'];//zapisujemy haslo z bazy do sesji
  43.  
  44. echo 'Zostałes poprawnie zalogowany <b>'.$_SESSION['login'].'</b>!';
  45.  
  46.  
  47.  
  48. if($_SESSION['status']==2)
  49. {
  50. echo 'jesteś administratorem';
  51.  
  52. }
  53. else if($_SESSION['status']==1)
  54. {
  55. echo 'Jesteś moderatorem';
  56. }
  57. else
  58. {
  59. echo 'Nie jesteś administratorem ;-(';
  60. }
  61.  
  62.  
  63.  
  64. }
  65. }
  66.  
  67. }
  68.  
  69. ?>
andrzejlechniak
Dzięki, działa. Zrobiłem nieco inaczej, aczkolwiek skorzystałem z pomysłu daros17 z pętlą while i... i działa... Dzięki za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.