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();
}
}