sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo $_POST un valor asignado dinámicamente en PHP?

En lugar de colocar algunos datos en un name atributo, haga el name atribuye algo que sabes y usa el value atribuye los datos desconocidos, el nombre en este caso.

Entonces

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

se convierte

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

Ahora en el PHP ya sabes qué buscar. Así que todo lo que tenemos que arreglar ahora es el ataque de inyección SQL problemas, lo hacemos preparando la consulta con un parámetro y luego vinculando un valor al parámetro como este

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