一部のデータをname
に配置する代わりに 属性、name
を作成します 知っていることを特定し、value
を使用します 不明なデータ(この場合は名前)の属性を指定します。
だから
<input type='hidden' name='" . $tab[$x][1] . "' />
になります
<input type='hidden' name="thename" value='" . $tab[$x][1] . "' />
これで、PHPで何を探すべきかがわかります。したがって、今修正する必要があるのは、SQLインジェクション攻撃 だけです。 問題が発生した場合は、パラメータを使用してクエリを準備し、次のように値をパラメータにバインドすることでこれを行います
<?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();
}
}