Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]...i znów o logowaniu
Forum PHP.pl > Forum > Przedszkole
andrzejlechniak
Witajcie. Napisałem sobie skrypt logowania. I po części działa. Mam dwie tabele:

administratorzy
id | admin_login | admin_password | admin_name

i adekwatnie tabela uzytkownicy
id | user_login | user_password | user_name

Loguje się jako administrator i działa, ale mam 2 problemy, które sprawiają mi trochę problemów.
1. Jak wyciągać dane z bazy. Mam komunikat, że jest zalogowany (pole login) np. admin, a jak wyciągnąć z bazy np. admin_name, próbowałem z <input type="hidden" /> ale chciałbym, aby takie info pochodziło z sesji. Chciałbym takie dane wyciągać z bazy aby np. móc potem je edytować.

2. Jak za pomocą jednego skryptu móc logować administratora i użytkownika. Mam taki skrypt i pisze mi, że mam błąd loginu, mimo iż wpisuję poprawne dane. Czy chodzi o przypisanie danych?

Podaje mój kod:

  1. <?php
  2. function login_form ()
  3. {
  4. echo '<form action="index.php?id=logowanie" method="Post" >
  5. <fieldset class="przesyl_plikow">
  6. <legend><strong>Logowanie do serwisu</strong></legend>
  7. <div class="login_main">
  8.  
  9. <div class="log_form">
  10. <input type="hidden" name="admin_name" id="admin_name" />
  11. </div>
  12.  
  13. <div class="log_form">
  14. Login: <input name="login" type="text" id="login">
  15. </div>
  16. <div class="log_form">
  17. Hasło: <input name="password" type="password" id="password">
  18. </div>
  19. <div class="log_form">&nbsp;
  20. <input type="submit" name="submit" value="Zaloguj" title="zaloguj się" />
  21. <input type="reset" name="reset" value="Wyczyść" title="wyczyść pola" />
  22. </div>
  23. </div>
  24. </fieldset>
  25. </form>';
  26. }
  27.  
  28. if($_GET['wyloguj']=='tak')
  29. {
  30. $_SESSION['zalogowany'] = 0;
  31. echo 'Zostałeś wylogowany z serwisu!';
  32. }
  33.  
  34. if(isset($_POST['submit']))
  35. {
  36. //Zmiana wszystkich zmiennych przekazywanych $_POST
  37. foreach ($_POST AS $klucz => $wartosc)
  38. {
  39. $wartosc = trim($wartosc);
  40. $wartosc = mysql_real_escape_string($wartosc);
  41. $wartosc = stripslashes($wartosc);
  42. $wartosc = htmlspecialchars($wartosc, ENT_QUOTES);
  43. $_POST[$klucz] = $wartosc;
  44. }
  45.  
  46. //Dane z $_POST do wysłania w formularzu
  47. ////Dane do zalogowania jako Administrator
  48. ////////////////////////////////
  49. $admin_login = $_POST['login'];
  50. $admin_password = $_POST['password'];
  51. $admin_name = $_POST['admin_name'];
  52.  
  53. ////Dane do zalogowania jako Użytkownik
  54. /////////////////////////////////////////////////////////////
  55. $user_login = $_POST['login'];
  56. $user_password = $_POST['password'];
  57.  
  58. if(empty($admin_login) && empty($admin_password))
  59. {
  60. echo 'Błąd loginu lub hasła!';
  61. echo login_form();
  62. }
  63. else if (empty($user_login) && empty($user_password))
  64. {
  65. echo 'Błąd loginu lub hasła!';
  66. echo login_form();
  67. }
  68.  
  69. else if (!empty($admin_login) && !empty($admin_password))
  70. {
  71. ///Zalogowanie administratora
  72. $sql = "SELECT * FROM administratorzy WHERE admin_login='$admin_login' and admin_password='$admin_password'";
  73. $result = mysql_query($sql);
  74. $count = mysql_num_rows($result);
  75.  
  76. if($count==1)
  77. {
  78. $_SESSION['zalogowany'] = 'tak';
  79. $_SESSION['admin_login'] = $admin_login;
  80. $_SESSION['admin_name'] = $admin_name;
  81.  
  82. echo '<div>
  83. Jesteś zalogowany jako '.$_SESSION['admin_name'].' | Twój login: '.$_SESSION['admin_login'].'
  84. <a href="index.php?id=logowanie&wyloguj=tak">Wyloguj</a>
  85. </div>';
  86. }
  87. else
  88. {
  89. echo 'Błędny login lub hasło';
  90. echo login_form();
  91. }
  92. }
  93. else if(!empty($user_login) && !empty($user_password))
  94. {
  95. //Zalogowanie użytkownika
  96. $sql = "SELECT * FROM uzytkownicy WHERE user_login='$user_login' and user_password='$user_password'";
  97. $result = mysql_query($sql);
  98. $count = mysql_num_rows($result);
  99.  
  100. if($count==2)
  101. {
  102. $_SESSION['zalogowany'] = 'tak';
  103. $_SESSION['user_login'] = $user_login;
  104. $_SESSION['user_name'] = $user_name;
  105. echo '<div>
  106. Jesteś zalogowany jako '.$_SESSION['user_name'].' | Twój login: '.$_SESSION['user_login'].'
  107. <a href="index.php?id=logowanie&wyloguj=1">Wyloguj</a>
  108. </div>';
  109. }
  110. else
  111. {
  112. echo 'Błędny login lub hasło';
  113. echo login_form();
  114. }
  115. }
  116. else
  117. {
  118. echo 'Błąd logowania';
  119. }
  120. }
  121. else {
  122. 'Błąd logowanie';
  123. echo login_form();
  124. }
  125.  
  126. ?>


3. Chodziłby mi też o logowanie z warunkami, np. nie zaloguje użytkownika jeżeli jest zablokowany.
Fifi209
Przeczytałem pierwsze zdanie, zobaczyłem dwie tabele i muszę stwierdzić że faktycznie masz problem. Trzymaj wszystkich w jednej tabeli, dodaj dodatkowe pole które połączysz z drugą tabelą (uprawnienia) gdzie będziesz mógł nadać rangi: użytkownik, moderator, administrator i odpowiednie uprawnienia choćby 1,2,3
andrzejlechniak
W sumie to chyba lepszy pomysł, ale tak szczerze nie chciałbym aby dane administratora myliły się z danymi użytkowników. I jak wtedy to połączyć (left join?). I pytanie zasadnicze: jak wtedy wyciągnąć dane zalogowanych użytkowników, poprzez sesję, przypisanie? Bo jak przez sesje robię

  1. $_SESSION['user_name'] = $user_name;


to nic mi skrypt nie wyświetla, a w bazie jest nazwa.
nospor
Temat: Jak poprawnie zada pytanie
Temat ten zawiera porady, jak dostosować swój skrypt by widzieć więcej błędów.
Nie raz o to Cię prosiłem a Ty znowu nie zastosowałeś się do tego. Skąd wiem? Bo Twój skrypt generuje błędy, których ty nie widzisz.

Zamykam. Gdy się zastosujesz i nadal będziesz miał problem - zapraszam na PW - temat otworzę.
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-2025 Invision Power Services, Inc.