• 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

Mały hosting, OGROMNE możliwości
+1 głos
397 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 (256,580 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 (256,580 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 (256,580 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 (28,110 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 (28,110 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 656 wizyt
0 głosów
2 odpowiedzi 1,465 wizyt
pytanie zadane 29 grudnia 2018 w SQL, bazy danych przez StormHawk Nowicjusz (200 p.)
0 głosów
1 odpowiedź 618 wizyt
pytanie zadane 23 kwietnia 2023 w PHP przez MisticVoid Użytkownik (560 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,260 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...