• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Usuwanie usera z bazy danych za pomoca przycisku

Object Storage Arubacloud
+1 głos
146 wizyt
pytanie zadane 23 października 2020 w SQL, bazy danych przez Nowicjusz13 Użytkownik (570 p.)

Witam ma taki problem chciał bym żeby do użytkowników pojawiających się w tabeli pojawiały się przyciski które umożliwią usunięcie ich z bazy danych. Dodatkowo pytając czy napewno chcesz usunąć użytkownika. Kompletnie nie wiem jak się za to zabrać. Proszę o jakąś podpowiedź :)

Kod PHP

<!DOCTYPE html>
<html>
 
 <head>
     <title> Formularze </title>
      <link rel="stylesheet" href="style.css">
 </head>
  
 <body>

    <div id="box1">
    <div id="boxL"></div>
<div id="boxP">
        
         <table style="border: solid; border-color: yellow; font-color:yellow; margin-left: 8%; margin-top: -10%;">
         <tr>
            
                        <td id="id">ID</td>
                        <td id="email">EMAIL</td>
                        <td id="state">STATE</td>

</tr>


  <div>
     <?php
     $logged = false;
  
     $mysqli = new mysqli('localhost', 'root', null, 'school');
     if ($mysqli->connect_errno) {
         echo 'Błąd połączenia z bazą danych';
         die;
     }
  
     $fields = ['login', 'password'];
     foreach ($fields as $field) {
  
         if (isset($_POST[$field]) && $_POST[$field] == '') {
             $errors[$field] = 'To pole nie może być puste';
         }
     }
  
     if (isset($_POST['log'])) {
  
         if (isset($_POST['login']) && isset($_POST['password'])) {
             $query = 'SELECT * FROM users WHERE state = 200 AND login = "' . $_POST['login'] . '"';
             $result = $mysqli->query($query)
                 ->fetch_array(MYSQLI_ASSOC);
  
             if (isset($result['password']) && password_verify($_POST['password'], $result['password'])) {
                 $logged = true;
             } else {
                 $errors['main'] = 'Błędne dane logowania';
             }
         }
     } elseif (isset($_POST['sign'])) {
  
         if (strlen($_POST['login']) < 5 || strpos($_POST['login'], '@') == false) {
             $errors['login'] = 'Login jest nieprawidłowy.';
         }
  
         if (strlen($_POST['password']) < 5) {
             $errors['password'] = 'Hasło jest nieprawidłowe.';
         }
  
         if (!isset($errors)) {
             $duplicate = $mysqli->query('SELECT COUNT(id) as counter FROM users WHERE login = "' . $_POST['login'] . '"')
                 ->fetch_array(MYSQLI_ASSOC);
  
             if ($duplicate['counter'] == 0) {
                 $query = 'INSERT INTO users (login, password, state) VALUES ("' . $_POST['login'] . '", "' . password_hash($_POST['password'], PASSWORD_DEFAULT) . '", 200)';
                 $mysqli->query($query);
             } else {
                 $errors['login'] = 'Podany login jest już zajęty.';
             }
         }
     }
     $wynik = $mysqli->query("SELECT `id`, `login`, `state` FROM `users`");
  
     while ($row = mysqli_fetch_array($wynik)) {

             if($row['state']==150){
                        $row['state'] = "nieaktywny";
             }
             else if($row['state']==200){
                     $row['state'] = "aktywny";
             };

         echo '<tr>' .'<td>'. $row['id'] . '</td>' . '<td>'. $row['login'] . '</td>' .'<td>'. $row['state'] .'</td>'. '</tr>';
         echo "<br>";
     }

  
  
     ?>
     </div>
  </table>
     <form action="#" method="POST">
         <p>
             <label for="login"></label>
             <input type="text" id="login" name="login" placeholder="Login" value="<?php echo isset($_POST['login']) ? $_POST['login'] : ''; ?>">
             <strong style="color: red; font-size: 0.8em; display: block; margin-left: 25%;"><?php echo isset($errors['login']) ? $errors['login'] : ''; ?></strong>
         </p>
         <p>
             <label for="pass"></label>
             <input type="password" id="pass" name="password" placeholder="Hasło">
             <strong style="color: red; margin-left: 25%; font-size: 0.8em; display: block;"><?php echo isset($errors['password']) ? $errors['password'] : ''; ?></strong>
         </p>
         <input type="submit" id="log" name="log" value="Zaloguj">
         <input type="submit" id="sign" name="sign" value="Zarejestruj">
     </form>
  
     <?php if (isset($errors['main'])) { ?>
         <p> <strong style="color: red; font-size: 20px; margin-top: 10%; margin-left:5%; display: block;"> <?php echo $errors['main']; ?> </strong> </p>
     <?php } elseif ($logged === true) { ?>
         <p style="color: green;"> Użytkownik został zalogowany</p>
     <?php } ?>
     <input type="hidden" name="id" value="<tutaj id>" />
<input type="submit" value="Usuń" />
  
  
  
 </body>
  
 </html>

Kod Css

body
    {
     margin: 0;
     background-color: white;
     color: black;
     font-family: 'Open Sans', sans-serif;
     font-size: 17px;
    }

 

 #boxP
            {
                height: 500px;
                width: 350px;
                background-color: #696969;
                float: left;
                box-shadow: 14px 10px 14px;
            }

             #boxL
            {
               float: left;
               height: 500px;
               width: 350px;
               background-color: #1f1f14;
               box-shadow: 13px 10px 14px;
               
           }

           #box1
           {
                height: 400px;
                width: 800px;
                position: absolute;
                left: 50%;
                top: 45%;
                transform: translate(-50%,-50%);    
           }
#login
           {
                width: 170px;
                height: 35px;
                color: black;
                background-color: white;
                margin-top: 10%;
                margin-left: 25%;
                text-align: center;
                border-radius: 10px;
                border: hidden;
                
           }
 #pass
           {
                width: 170px;
                height: 35px;
                color: black;
                background-color: white;
                margin-top: 5%;
                text-align: center;
                border-radius: 10px;
                border: hidden;
               margin-left: 25%;
                
           }
           #log
           {
                height: 30px;
                width: 80px;
                background-color: white;
                margin-top: 25%;
                margin-right: 5%;
                margin-bottom: 5%;
                float: right;
                border-radius: 10px;
                border: hidden;
                font-size: 15px;
            }

            #log:hover
            {
                
                height: 30px;
                width: 80px;
                background-color: yellow;
                margin-top: 25%;
                margin-right: 5%;
                margin-bottom: 5%;
                float: right;
                border-radius: 10px;
                border: hidden;
                font-size: 15px;
            
            }
            #sign
           {
                height: 30px;
                width: 80px;
                background-color: white;
                margin-top: 25%;
                margin-right: 5%;
                margin-bottom: 5%;
                float: right;
                border-radius: 10px;
                border: hidden;
                font-size: 15px;
            }

            #sign:hover
            {
                
                height: 30px;
                width: 80px;
                background-color: yellow;
                margin-top: 25%;
                margin-right: 5%;
                margin-bottom: 5%;
                float: right;
                border-radius: 10px;
                border: hidden;
                font-size: 15px;
            
            }
            #id{
                border-bottom: solid;

            }
            #email{
                border-bottom: solid;

            }
            #state{
                border-bottom: solid;

            }

 

komentarz 24 października 2020 przez VBService Ekspert (253,280 p.)
edycja 24 października 2020 przez VBService

Pierwsza uwaga (sugestia) do css-a, jeśli .class a .class:hover , w Twoim przypadku różni się background-color , to możesz skrócić zapis css-a.

#sign
{
  height: 30px;
  width: 80px;
  background-color: white;
  margin-top: 25%;
  margin-right: 5%;
  margin-bottom: 5%;
  float: right;
  border-radius: 10px;
  border: hidden;
  font-size: 15px;
}

#sign:hover
{
  height: 30px;
  width: 80px;
  background-color: yellow;
  margin-top: 25%;
  margin-right: 5%;
  margin-bottom: 5%;
  float: right;
  border-radius: 10px;
  border: hidden;
  font-size: 15px;
}

na

#sign
{
  height: 30px;
  width: 80px;
  background-color: white;
  margin-top: 25%;
  margin-right: 5%;
  margin-bottom: 5%;
  float: right;
  border-radius: 10px;
  border: hidden;
  font-size: 15px;
  transition: background-color 0.8s; // ;-)
}

#sign:hover
{
  background-color: yellow;
}

 

komentarz 24 października 2020 przez VBService Ekspert (253,280 p.)

Druga sprawa taki, zapis:

$query = 'SELECT * FROM users WHERE state = 200 AND login = "' . $_POST['login'] . '"';

czy taki

$query = 'INSERT INTO users (login, password, state) VALUES ("' . $_POST['login'] . '", ...)

czyli bezpośrednie umieszczanie danych od użytkownika ($_POST['login']), bez jakiejkolwiek weryfikacji do zapytania sql, prosi się o SQL injection

SQL injection – metoda ataku komputerowego wykorzystująca lukę w zabezpieczeniach aplikacji polegającą na nieodpowiednim filtrowaniu lub niedostatecznym typowaniu danych użytkownika, które to dane są później wykorzystywane przy wykonaniu zapytań do bazy danych. Podatne są na nią wszystkie systemy przyjmujące dane od użytkownika i dynamicznie generujące zapytania do bazy danych.

PHP Sanitize and Validate Input Fields via Filters
PHP Serialize() & Unserialize() Issues
PHP FILTER_SANITIZE_STRING Filter

Using Prepared Statements in MySQL with PHP - Tutorial
php - How to use mysqli prepared statements?

komentarz 24 października 2020 przez VBService Ekspert (253,280 p.)

Znacznik <br> nie jest wymagany przy tworzeniu wierszy tabeli html

echo '<tr>' .'<td>'. $row['id'] . '</td>' . '<td>'. $row['login'] . '</td>' .'<td>'. $row['state'] .'</td>'. '</tr>';
echo "<br>";

można zamienić na

echo "<tr><td>$row['id']</td><td>$row['login']</td><td>$row['state']</td></tr>";

 

komentarz 24 października 2020 przez wizarddos Nałogowiec (25,930 p.)

@Nowicjusz13, mam pytanie co do linijki 119. Jaki formularz ten submit zatwierdza? 

komentarz 24 października 2020 przez Nowicjusz13 Użytkownik (570 p.)
edycja 24 października 2020 przez Nowicjusz13
On nic jeszcze nie zatwierdza próbowałem juz cos podzialac z tym usuwaniem użytkownika

1 odpowiedź

0 głosów
odpowiedź 5 listopada 2020 przez wizarddos Nałogowiec (25,930 p.)

Wykombinowałem coś takiego. tworzysz taki formularz

<form method = "post" action = "tu nazwa pliku">
	<input type = "hidden" value = "tu id usera"/>
	<input type = "submit" value = "usuń z bazy danych"/>
</form>

a potem wykonujesz zapytanie DELETE do bazy i tyle.

 

(tak wiem że to odkop tematu z przed 2 tygodni)

Podobne pytania

0 głosów
2 odpowiedzi 305 wizyt
0 głosów
2 odpowiedzi 894 wizyt
pytanie zadane 29 grudnia 2018 w SQL, bazy danych przez StormHawk Nowicjusz (200 p.)
0 głosów
1 odpowiedź 243 wizyt
pytanie zadane 23 kwietnia 2023 w PHP przez MisticVoid Początkujący (490 p.)

92,567 zapytań

141,420 odpowiedzi

319,616 komentarzy

61,953 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...