Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wykonywanie się niewłaściwych if-ów (CHAT) adminpanel
misioqusio
post 3.12.2017, 22:05:10
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.11.2017

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


Witam,
Tytuł może jest trochę niejasny, ale chodzi mi o to, że robię adminpanel, dzięki któremu można np. usuwać użytkowników z poziomu przeglądarki.
Ogólnie wszystko działa, jeśli użytkownik z funkcją "admin" zaloguje się na swoje konto przechodzi na właściwą podstronę (adminpanel.php), jeśli przy np. usuwaniu gracza, czy banowaniu wyświetlają się błędy lub odp. pozytywne dla każdego pola.
Przykład:
Wpisałem w pole "USUŃ UŻYTKOWNIKA" wartość "Bartek".
Gracz się usunął, ale przy okazji wyświetliły się errory dla innych pól:
Przy polu "USUŃ WSZYSTKIE POSTY UŻYTKOWNIKA" wyświetla się Nie udało się usunąć postów . Serwer nie potrafi znaleźć wybranych elementów. To samo dla pola z zawieszeniem.
Proszę o pomoc, próbowałem różnych sposobów.

Kod:
ADMINPANEL.PHP (myślę, że to wystarczy)
  1. <?php
  2. if (($_SESSION['admin']) && ($_SESSION['admin'] = true))
  3. {
  4. $host = "localhost";
  5. $user = "root";
  6. $password = "";
  7. $name = "chat";
  8. $polaczenie = @new mysqli($host, $user, $password, $name);
  9.  
  10. if (isset($_POST['usuwanie']))
  11. {
  12. $nickdelete = $_POST['usuwanie'];
  13. if ($rezultat = @$polaczenie->query("SELECT * FROM `uzytkownicy` WHERE nazwa = '$nickdelete'"))
  14. {
  15. $usuniete_nicki = $rezultat->num_rows;
  16. if ($usuniete_nicki > 0)
  17. {
  18. $rezultat = @$polaczenie->query("DELETE FROM `uzytkownicy` WHERE nazwa = '$nickdelete'");
  19. $_SESSION['usunieto_uzytkownika'] = "Użytkownik $nickdelete został poprawnie usunięty";
  20. }
  21. if ($usuniete_nicki == 0)
  22. {
  23. $_SESSION['usunieto_uzytkownika_false'] = "Nie udało się usunąć użytkownika $nickdelete. Serwer nie potrafi znaleźć wybranego elementu";
  24. }
  25. }
  26. }
  27. if (isset($_POST['posty']))
  28. {
  29. $posty = $_POST['posty'];
  30. if ($rezultat = @$polaczenie->query("SELECT * FROM `wiadomosci` WHERE nazwa = '$posty'"))
  31. {
  32. $usuniete_posty = $rezultat->num_rows;
  33. if ($usuniete_posty > 0)
  34. {
  35. $rezultat = @$polaczenie->query("DELETE FROM `wiadomosci` WHERE nazwa = '$posty'");
  36. $_SESSION['usunieto_posty'] = "Wszystkie posty użytkownika $posty zostały poprawnie usunięte";
  37. }
  38. if ($usuniete_posty == 0)
  39. {
  40. $_SESSION['usunieto_posty_false'] = "Nie udało się usunąć postów $posty. Serwer nie potrafi znaleźć wybranych elementów";
  41. }
  42. }
  43. }
  44.  
  45.  
  46. if (isset($_POST['zawieszenie']))
  47. {
  48. $nickzawies = $_POST['zawieszenie'];;
  49. if ($rezultat = @$polaczenie->query("SELECT * FROM `uzytkownicy` WHERE nazwa = '$nickzawies'"))
  50. {
  51. $ban = $rezultat->num_rows;
  52. if ($ban > 0)
  53. {
  54. $rezultat = @$polaczenie->query("UPDATE `uzytkownicy` SET `stan` = 'ban' WHERE nazwa = '$nickzawies'");
  55. $_SESSION['zbanowany'] = "Użytkownik $nickzawies został poprawnie zawieszony";
  56. }
  57. if ($ban == 0)
  58. {
  59. $_SESSION['zbanowany_false'] = "Nie udało się zawiesić użytkownika $nickzawies. Serwer nie potrafi znaleźć wybranego elementu.";
  60. }
  61. }
  62. }
  63. }
  64.  
  65.  
  66.  
  67. else
  68. {
  69. header('Location: index.php');
  70. }
  71.  
  72. ?>
  73. <!DOCTYPE HTML>
  74. <html lang="pl-PL">
  75. <head>
  76. <meta charset="utf-8">
  77. <link rel="Stylesheet" type="text/css" href="style.css" />
  78. <title>CheckChat - ADMINPANEL</title>
  79. </head>
  80. <body>
  81. <div id="header"><i><b><font color="red">~</font> <font color="blue">CheckChat</font> <font color="red">~</font></i></b></div>
  82. <div id="inf">ADMINPANEL</div>
  83. <div id="adminpage">
  84. <form action="adminpanel.php" method="post">
  85. USUŃ KONTO UŻYTKOWNIKA:
  86. <br />
  87. <div id="adminform">
  88. <input type="text" name="usuwanie" autocomplete="off" />
  89. <br />
  90. <?php
  91. if (isset($_SESSION['usunieto_uzytkownika']))
  92. {
  93. echo '<div class="ok">'.$_SESSION['usunieto_uzytkownika'].'</div>';
  94. unset ($_SESSION['usunieto_uzytkownika']);
  95. }
  96. if (isset($_SESSION['usunieto_uzytkownika_false']))
  97. {
  98. echo '<div class="error">'.$_SESSION['usunieto_uzytkownika_false'].'</div>';
  99. unset ($_SESSION['usunieto_uzytkownika_false']);
  100. }
  101. ?>
  102. <br />
  103. USUŃ WSZYSTKIE POSTY UŻYTKOWNIKA:
  104. <br />
  105. <input type="text" name="posty" autocomplete="off" />
  106. <br />
  107. <?php
  108. if (isset($_SESSION['usunieto_posty']))
  109. {
  110. echo '<div class="ok">'.$_SESSION['usunieto_posty'].'</div>';
  111. unset ($_SESSION['usunieto_posty']);
  112. }
  113. if (isset($_SESSION['usunieto_posty_false']))
  114. {
  115. echo '<div class="error">'.$_SESSION['usunieto_posty_false'].'</div>';
  116. unset ($_SESSION['usunieto_posty_false']);
  117. }
  118. ?><br />
  119. ZAWIEŚ KONTO UŻYTKOWNIKA:
  120. <br />
  121. <input type="text" name="zawieszenie" autocomplete="off" />
  122. <br />
  123. <?php
  124. if (isset($_SESSION['zbanowany']))
  125. {
  126. echo '<div class="ok">'.$_SESSION['zbanowany'].'</div>';
  127. unset ($_SESSION['zbanowany']);
  128. }
  129. if (isset($_SESSION['zbanowany_false']))
  130. {
  131. echo '<div class="error">'.$_SESSION['zbanowany_false'].'</div>';
  132. unset ($_SESSION['zbanowany_false']);
  133. }
  134. ?><br />
  135. <input type="submit" value="Wykonaj" name="adminsend" />
  136. <br /><br />
  137. <?php
  138. echo 'Zalogowano: '.$_SESSION['chatnick'];
  139. ?>
  140. </form>
  141. </div>
  142. <div id="adminchat">
  143. <?php
  144. if($rezultat = $polaczenie->query("SELECT * FROM `wiadomosci`"))
  145. {
  146. while ($wiersz = $rezultat->fetch_assoc())
  147. {
  148. printf ("%s: %s\n", $wiersz["nazwa"], $wiersz["wiadomosc"]);
  149. echo "<br />";
  150. }
  151. }
  152. ?>
  153. </div>
  154. </body>
  155. </html>

Go to the top of the page
+Quote Post
markonix
post 4.12.2017, 00:08:33
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Wysyłasz wszystkie inputy więc wywołujesz wszystkie akcje. Nigdzie nie warunkujesz co ma się wykonać - isset sprawdza tylko czy jest utworzona, a nie czy jest pusta.
Rozdziel to na różne form'y lub przyciski (buttony z name), albo używaj empty zamiast isset.


--------------------
Go to the top of the page
+Quote Post
viking
post 4.12.2017, 07:21:33
Post #3





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Poza tym nigdy nie pisz w ten sposób kodu @new mysql itd. Masz kilka miejsc w których całość może się wywalić. Dodatkowo poczytaj trochę o zabezpieczaniu zapytań.

$_SESSION['admin'] = true raczej chodzi o $_SESSION['admin'] === true

Ten post edytował viking 4.12.2017, 07:22:23


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 07:58