Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment $_POST une valeur assignée dynamiquement en PHP ?

Au lieu de placer des données dans un name attribut, faites le name attribuez quelque chose que vous connaissez et utilisez la value attribuez les données inconnues, le nom dans ce cas.

Alors

<input type='hidden' name='" . $tab[$x][1] . "' />

devient

<input type='hidden' name="thename" value='" . $tab[$x][1] . "' />

Maintenant, dans le PHP, vous savez ce qu'il faut rechercher. Donc, tout ce que nous devons corriger maintenant est l'l'attaque par injection SQL problèmes, nous le faisons en préparant la requête avec un paramètre, puis en liant une valeur au paramètre comme ceci

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST["delete-submit"])) 
{
    require "dbh.ext.php";

    // add a parameter to the query and not a concatenated value        
    $sql = "DELETE FROM `persons` WHERE `name` = ?";

    $stmt = $conn->prepare($sql);
    
    // bind the value to the parameter
    $stmt->bind_param('s', $_POST['thename']);
    $res = $stmt->execute();

    if (!$res) {
        header("Location: ../persons/persons.php?error=sqlerror");
        exit;
    } else {
        header("Location: ../persons/persons.php");
        exit();
    }
}