Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Admin i Uprawnienia
Forum PHP.pl > Forum > PHP
Crovean
Problem mam z odczytem z bazy danych wartości liczbowej.
Chce odczytac z bazy danych wartosc "1" w tabeli Uzytkownicy -> Admin jesli dany uzytkownik posiada wartosc INT "1" to wyswietli index2.html a jestli posiada INT "0 "to wyswietli sie index1.html.
Proszę o pomoc...

  1. <?PHP
  2.  
  3. function checkPass($user, $pass)
  4. {
  5. $link = mysql_connect("localhost", "uzyt_zak", "haslo");
  6. $flag = mysql_select_db("uzytkownik");
  7.  
  8. if(!$link || !$flag){
  9. //echo("Problem z połączeniem z bazą danych.");
  10. return false;
  11. }
  12. $query = "SELECT HASLO, ADMIN FROM UZYTKOWNICY WHERE LOGIN = '".$user."'";
  13. //$query = "SELECT PASS FROM USERS WHERE NAME = '".$user."'";
  14.  
  15. if(!$result = mysql_query($query)){
  16. //echo("Problem z bazą danych. Odrzucone zapytanie.");
  17. mysql_close($link);
  18. return false;
  19. }
  20.  
  21. if(!$row = mysql_fetch_row($result)){
  22. mysql_close($link);
  23. return false;
  24. }
  25.  
  26. // -- admin
  27.  
  28. // -- pasword
  29. if($row[0] != $pass){
  30. mysql_close($link);
  31. return false;
  32. }
  33. else{
  34. mysql_close($link);
  35. return true;
  36. }
  37.  
  38.  
  39.  
  40. }
  41. function logujAdmin ($admin){
  42. $link = mysql_connect("localhost", "uzyt_zak", "haslo");
  43. $flag = mysql_select_db("uzytkownik");
  44.  
  45. if(!$link || !$flag){
  46. //echo("Problem z połączeniem z bazą danych.");
  47. return false;
  48. }
  49. $query1 = "SELECT ADMIN FROM UZYTKOWNICY WHERE LOGIN and Admin='1'";
  50. //$query = "SELECT PASS FROM USERS WHERE NAME = '".$user."'";
  51.  
  52. if(!$result1 = mysql_query($query1)){
  53. //echo("Problem z bazą danych. Odrzucone zapytanie.");
  54. mysql_close($link);
  55. return false;
  56. }
  57.  
  58. if(!$row = mysql_fetch_row($result1)){
  59. mysql_close($link);
  60. return false;
  61. }
  62.  
  63. }
  64.  
  65.  
  66. if(!isSet($_POST["haslo"]) || !isSet($_POST["user"])){
  67. include('error.html');
  68. }
  69. else if(checkPass($_POST["user"], $_POST["haslo"])){
  70.  
  71. if(logujAdmin($_POST["admin"])){
  72. include('index1.html');
  73. }else{
  74. include('index2.html');
  75. }
  76.  
  77. }
  78. else{
  79. include('error.html');
  80. }
  81.  
  82.  
  83. ?>
  84.  
Fifi209
Czemu hasła nie sprawdzasz po stronie mysql... ?
Crovean
Nie dodałem tego ale wydaje mi się że narazie to ma mały wpływ na tym etapie... Niewiem nadal jak zrobić to aby mogło się wyświetlać odpowiedni html przy odpowiednich uprawnieniach nadanych w bazie
piotr94
linijka 49: $query1 = "SELECT ADMIN FROM UZYTKOWNICY WHERE LOGIN = '$admin' and Admin='1'";
Crovean
No super dzięki. Ale teraz główkuje nad zapytaniem samym: aby mogło wyświetlać się w zależności od parametru odpowiedni html.

  1. if(logujAdmin($_POST["Admin"])){
  2. include('index1.html');
  3. }else{
  4. include('index2.html');
  5. }
  6.  
piotr94
po linijce 61 w funkcji logujAdmin:
  1. return true;
  2. }else{
  3. return false;
  4. }

jeśli użytkownik będzie adminem to zaincluduje index1.html, w przeciwnym wypadku index2.html
Crovean
O dzięki ale nadal wyświetla mi się za każdym razem tak jak bym łączył się za każadym razem z adminem...
Przy wprowadzonych zmianach wyskakuje mi komunikat:

Notice: Undefined index: admin in login.php on line 76
piotr94
wklej jeszcze raz całą treść pliku ;-)
Crovean
Oto obecny kod wyskakuje blad przy:
Notice: Undefined index: admin in login.php on line 76
I wyświetla się tylko ciągle index2.html czyli ten dla admina

  1. <?PHP
  2.  
  3. function checkPass($user, $pass)
  4. {
  5. $link = mysql_connect("localhost", "uzyt_zak", "haslo");
  6. $flag = mysql_select_db("uzytkownik");
  7.  
  8. if(!$link || !$flag){
  9. //echo("Problem z połączeniem z bazą danych.");
  10. return false;
  11. }
  12. $query = "SELECT HASLO, ADMIN FROM UZYTKOWNICY WHERE LOGIN = '".$user."'";
  13. //$query = "SELECT PASS FROM USERS WHERE NAME = '".$user."'";
  14.  
  15. if(!$result = mysql_query($query)){
  16. //echo("Problem z bazą danych. Odrzucone zapytanie.");
  17. mysql_close($link);
  18. return false;
  19. }
  20.  
  21. if(!$row = mysql_fetch_row($result)){
  22. mysql_close($link);
  23. return false;
  24. }
  25.  
  26. // -- admin
  27.  
  28. // -- pasword
  29. if($row[0] != $pass){
  30. mysql_close($link);
  31. return false;
  32. }
  33. else{
  34. mysql_close($link);
  35. return true;
  36. }
  37.  
  38.  
  39.  
  40. }
  41. function logujAdmin ($admin){
  42. $link = mysql_connect("localhost", "uzyt_zak", "haslo");
  43. $flag = mysql_select_db("uzytkownik");
  44.  
  45. if(!$link || !$flag){
  46. //echo("Problem z połączeniem z bazą danych.");
  47. return false;
  48. }
  49. $query1 = "SELECT ADMIN FROM UZYTKOWNICY WHERE LOGIN = '$admin' and Admin='1'";
  50. //$query = "SELECT PASS FROM USERS WHERE NAME = '".$user."'";
  51.  
  52. if(!$result1 = mysql_query($query1)){
  53. //echo("Problem z bazą danych. Odrzucone zapytanie.");
  54. mysql_close($link);
  55. return false;
  56. }
  57.  
  58. if(!$row = mysql_fetch_row($result1)){
  59. mysql_close($link);
  60. return false;
  61. }
  62. return true;
  63. }else{
  64. return false;
  65. }
  66.  
  67. }
  68.  
  69.  
  70. if(!isSet($_POST["haslo"]) || !isSet($_POST["user"])){
  71. include('error.html');
  72. }
  73. else if(checkPass($_POST["user"], $_POST["haslo"])){
  74.  
  75. if(logujAdmin($_GET["admin"])){
  76. include('index1.html');
  77. }else{
  78. include('index2.html');
  79. }
  80.  
  81. }
  82. else{
  83. include('error.html');
  84. }
  85.  
  86.  
  87. ?>
  88.  
  89.  
  90.  
piotr94
spróbuj mysql_afected_rows()>0 zamiast ...()!=0
Crovean
Nadal wyświetla się błąd przy:

Notice: Undefined index: admin in login.php on line 76

  1. 76. if(logujAdmin($_POST["admin"])){
  2. 77. include('index1.html');
  3. 78. }else{
  4. 79. include('index2.html');
  5. 80. }


erix
No jak nie ma sprawdzanej zmiennej, to wywali.

Sprawdzaj przez empty, czy zmienna została zainicjalizowana (konkretnie ten klucz w tablicy $_POST).
Crovean
No właśnie jak widać nie inicjuje i niewiem dlaczego... hmmm
askone
Hej

Sprawdź dokładnie nazwę pola w formularzu logowania. Skoro dostajesz to przez $_POST to w formularzu logowania musisz mieć pole "admin"

Pozdro
Crovean
No nie mam "admin" teraz myślę gdzie by to wstawić aby mogło dobrze funkcjonować...

  1. <FORM NAME = "formularz1"
  2. ACTION = "login.php"
  3. METHOD = "POST"
  4. >
  5. <TABLE border="1"><TR>
  6. <TD bordercolor="#FFFFFF">Użytkownik:</TD>
  7. <TD bordercolor="#FFFFFF">
  8. <INPUT TYPE="text" NAME="user">
  9. </TD>
  10. </TR><TR>
  11. <TD bordercolor="#FFFFFF">Hasło:</TD>
  12. <TD bordercolor="#FFFFFF">
  13. <INPUT TYPE="password" NAME="haslo">
  14. </TD>
  15. </TR><TR>
  16. <TD COLSPAN="2"
  17. ALIGN="center"
  18. BORDERCOLOR="#FFFFFF"
  19. >
  20. <INPUT TYPE="submit" VALUE="Wejdź">
  21. </TD>
  22. </TR></TABLE>
  23. </FORM>
  24.  
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.