per POST übergebenes Array überprüfen

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Jakob, 14.07.2005.

  1. Jakob

    Jakob Thread Starter MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    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

    Beiträge:
    197
    Zustimmungen:
    5
    MacUser seit:
    20.11.2004
    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

    Beiträge:
    3.276
    Zustimmungen:
    13
    MacUser seit:
    01.06.2004
    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

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    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

    Beiträge:
    197
    Zustimmungen:
    5
    MacUser seit:
    20.11.2004
    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

    Beiträge:
    2.066
    Zustimmungen:
    110
    MacUser seit:
    24.02.2004
    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
     
    Zuletzt bearbeitet: 14.07.2005
  7. dms

    dms Gast

    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));
    }
     
    Zuletzt von einem Moderator bearbeitet: 14.07.2005
  8. ThaHammer

    ThaHammer MacUser Mitglied

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