Mysql
 sql >> Database >  >> RDS >> Mysql

Come $ _POST un valore assegnato dinamicamente in PHP?

Invece di inserire alcuni dati in un name attributo, crea il name attribuisci qualcosa che conosci e usa il value attribuire i dati sconosciuti, in questo caso il nome.

Quindi

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

diventa

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

Ora nel PHP sai cosa cercare. Quindi tutto ciò che dobbiamo correggere ora è l'SQL Injection Attack problemi, lo facciamo preparando la query con un parametro e quindi associando un valore al parametro come questo

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