Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como $ _POST um valor atribuído dinamicamente em PHP?


Em vez de colocar alguns dados em um name atributo, faça o name atribua algo que você conhece e use o value atribuir os dados desconhecidos, o nome neste caso.

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

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

Agora no PHP você sabe o que procurar. Portanto, tudo o que precisamos corrigir agora é o Ataque de injeção de SQL problemas, fazemos isso preparando a consulta com um parâmetro e, em seguida, vinculando um valor ao 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();
    }
}