Ankündigung

Einklappen
Keine Ankündigung bisher.

php foreach

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php foreach

    Hallo

    ich möchte gerne SQL Injektion vermeiden und wollte daher über mein Array folgenden Code drüber laufen lassen. Leider wirft er mir aber z.b. beim echo / nicht raus etc. Hat jemand zufällig eine Idee ?. Danke :

    PHP-Code:
    $user = array();
    $user['code'] = $code;
    $user['anrede'] = $_POST['KAnrede'];
    $user['vorname'] = $_POST['KVorname'];
    $user['nachname'] = $_POST['KName'];
    $user['strasse'] = $_POST['KStrasse']." ".$_POST['KHausnummer'];
    $user['plz'] = $_POST['KLand']."-".$_POST['KPLZ'];
    $user['ort'] = $_POST['KOrt'];

    foreach(
    $user as $key=>$u)
    {
    $user[$key] = strip_tags($user[$key]); // HTML entfernen
    $user[$key] = str_replace('/','',$user[$key]); // Slashes entfernen
    $user[$key] = stripslashes($user[$key]); // Backslashes entfernen
    $user[$key] = $db->escape($user[$key]);



  • #2
    Verstümmel deine Daten nicht, sondern nutzte Prepared Statements und beachte bei der Ausgabe den Kontext wechsel:
    http://php.net/manual/de/mysqli.quic...statements.php
    http://php.net/manual/de/pdo.prepared-statements.php

    Kommentar


    • #3
      Danke werde ich mir anschauen aber gibt es denn ein offensichtlichen Syntax Fehler oder sonstiges, wie ich es machen möchte. Würde erstmal gerne wissen warum meine Methode nicht funktioniert. Egal ob Sie schön ist oder nicht ;( Vielen Dank für die Hilfe

      Kommentar


      • #4
        Das hat nichts mit "schön" oder nicht zutun, sondern ist komplett der falsche Ansatz, nutze Prepared Statements und beachte den Kontextwechsel!
        Wenn man eine Funktion auf alle Elemente eines Arrays anwenden möchte, bietet sich die Funktion array_map an.
        http://php.net/manual/de/function.array-map.php

        Kommentar


        • #5
          Zitat von ronint84 Beitrag anzeigen
          ich möchte gerne SQL Injektion vermeiden
          Dann beachte immer die Kontextwechsel. Punkt.

          Das was du da machst ist ganz großer Käse. SQL-Injections vermeidet man dadurch den Kontextwechsel nach SQL zu beachten (oder Prepared Statements zu verwenden), und nicht indem man Daten möglichst kaputt macht.

          z.B. aus der Adresse "Musterstraße 12/3" machst du "Musterstraße 123", also eine andere Adresse.

          Kommentar

          Lädt...
          X