per POST übergebenes Array überprüfen

  1. Jakob

    Jakob Thread Starter MacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Hallo,

    habe ein Formular in dem ein paar Felder den Namen "name[]" haben, also dann als Array weitergegeben werden.

    Da der Inhalt in eine DB geschrieben werden soll, muss er noch überprüft werden. Mit nem foreach() kann man ja da durch, aber das arbeitet ja erst ab PHP5 mit der Referenz, unter 4 nur mit Kopien.

    Unter php.net wird folgendes vorgeschlagen:
    PHP:
    foreach ( array_keys($myArray) as $key ) {
      
    $element =& $myArray[$key];
      ...
    }
    Ich werd nicht schlau draus. Ich hab nen Array name[] von 0-14 und möchte über jedes ein htmlentities(addslashes()) laufen lassen. Wie mach ich das mit obigem Beispiel? Danke!
     
  2. lindic

    lindic MacUser Mitglied

    Mitglied seit:
    20.11.2004
    Beiträge:
    197
    Zustimmungen:
    5
    Hi!
    Ich würde es so schreiben:
    PHP:
    foreach ($_POST['name'] as $v) {
        
    $new_name[] = htmlentities(addslashes($v));
    }
    Dann sind nachher in dem Array $new_name die validierten Werte.
     
  3. ThaHammer

    ThaHammer MacUser Mitglied

    Mitglied seit:
    01.06.2004
    Beiträge:
    3.277
    Zustimmungen:
    13
    Habe ich das noch richtig im Kopf, das Du Arrays sowieso nicht so einfach übergebn kannst? Ich Glaub das waren doch Arrays beim Posten?
     
  4. Jakob

    Jakob Thread Starter MacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Vielen Dank lindic! Kann ich nicht anstelle des neuen Array-Namens auch den alten Namen benutzen, so dass er das Array quasi überschreibt?

    @ThaHammer: Es geht um ein Formular, was so aufgebaut ist:
    PHP:
    <form method="post">
    <
    input name="name[]"><br>
    <
    input name="name[]"><br>
    <
    input name="name[]"><br>
    <
    input name="name[]"><br>
    <
    input name="name[]"><br>

    <input type="submit">
    </
    form>
    Die Werte der input-Felder sind beim Abschicken dann im Array $name. $name[0] enthält den Wert des ersten Feldes, $name[1] den des zweiten usw.
     
  5. lindic

    lindic MacUser Mitglied

    Mitglied seit:
    20.11.2004
    Beiträge:
    197
    Zustimmungen:
    5
    Ja, das geht auch. Einfach einen Zähler einbauen, der jedes einzelne Array-Element überschreibt:
    PHP:
    $i 0;
    foreach (
    $_POST['name'] as $v) {
        
    $_POST['name'][$i] = htmlentities(addslashes($v));
        
    $i++;
    }
     
  6. Darii

    Darii MacUser Mitglied

    Mitglied seit:
    24.02.2004
    Beiträge:
    2.065
    Zustimmungen:
    110
    Oder so:
    PHP:
    foreach ($_POST['name'] as $k => $v) {
        
    $_POST['name'][$k] = htmlentities(addslashes($v));
    }
    Und mit dem addslashes wäre ich sehr vorsichtig, meistens passiert das schon automatisch. Endweder du schreibst eine eigene addslashes()-Funktion oder du schaltest magic_quotes einfach aus
     
  7. dms

    dms

    Oder Du fragst es vorher einfach ab. :)
    Code:
    foreach ($_POST['name'] as $k => $v) { 
        $_POST['name'][$k] = htmlentities((get_magic_quotes_gpc()) ? $v : addslashes($v));
    }
     
  8. ThaHammer

    ThaHammer MacUser Mitglied

    Mitglied seit:
    01.06.2004
    Beiträge:
    3.277
    Zustimmungen:
    13
    Oops! Ja da geht das.
     
Die Seite wird geladen...