Julian von Mendel: SQL: Update updated nicht.

Beitrag lesen

Hi,

unabhängig von deinem Problem: Wenn du nicht vorher $_POST durchgehst, und mysql_real_escape_string darauf anwendest, ist dein Skript gegen SQL-Injections anfällig.

Sry, bin etwas langsam zu so später Stunde: $_POST wende ich doch an und wo bzw. wie setzte ich 'mysql_real_escape_string' an, mal davon ab: was bewirkt 'mysql_real_escape_string'?

stell dir vor, jemand tippt in das Eingabefeld deines Formulars einen SQL-(Teil-)Befehl. Du baust ihn in deinen ein. Er kann somit die Anfrage und die Inhalte deiner DB manipulieren. Eine genauere Erklärung gibts von den PHP-Menschen.
mysql_real_escape_string() maskiert die Zeichen, die du in die Abfrage einbaust. So wird verhindert, dass jemand einen Befehl einschmuggeln kann, da alle Sonderzeichen, die dafür notwendig wären, maskiert werden.
Dein momentanes Skript ist aufjedenfall eine Sicherheitslücke. Wenn du die Post-Werte nur für SQL-Anfragen verwendest, könntest du am Anfang deines Skripts sowas in der Art schreiben:

  
function mysql_mask($array)  
{  
    foreach ($array as $key=>$val)  
        if (is_array($array))  
            $array[$key] = mysql_mask($val);  
        else  
            $array[$key] = mysql_real_escape_string($val);  
    return($array);  
}  
$_POST = mysql_mask($_POST);  

(ungetestet)

Alternativ könntest du auch auf PDO von PHP5 umsteigen, das bietet elegantere Methoden.

Schöne Grüße
Julian