sql >> Databasteknik >  >> RDS >> Mysql

Hur $_POST ett dynamiskt tilldelat värde i PHP?

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.

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



  1. Långsam migrering till molnet

  2. SQL-serverlogg, leverans och katastrofåterställning, installation och konfiguration -1

  3. Webbseminarium:Spårning av frågeförlopp i SQL Server

  4. Sailsjs Mysql ORM flera frågor på samma tabellfält