Istället för att placera en del data i ett name
attribut, gör name
tillskriv något du känner till och använd value
tillskriva de okända uppgifterna, namnet i detta fall.
Så
<input type='hidden' name='" . $tab[$x][1] . "' />
blir
<input type='hidden' name="thename" value='" . $tab[$x][1] . "' />
Nu i PHP vet du vad du ska leta efter. Så allt vi behöver fixa nu är SQL Injection Attack problem gör vi det genom att förbereda frågan med en parameter och sedan binda ett värde till parametern så här
<?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();
}
}