Ankündigung

Einklappen
Keine Ankündigung bisher.

Formularwerte in Schleife überprüfen

Einklappen

Neue Werbung 2019

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

  • Gast-Avatar
    Ein Gast erstellte das Thema Formularwerte in Schleife überprüfen.

    Formularwerte in Schleife überprüfen

    Hallo zusammen!

    Ich möchte überprüfen, ob die Usereingaben eines Formulars Datenbankgerecht sind.

    Das mache ich so:
    PHP-Code:
    <?
    $VORNAME = mysql_real_escape_string($_POST['VORNAME']);
    ?>
    Soweit sogut, aber ich hab sehr viele Formularfelder und möchte nicht jedes Feld einzeln prüfen müssen.

    Deshalb hab ich mir gedacht, ich mach es mit einer Schleife:
    PHP-Code:
    <?
    $anzahl_POST = count($_POST);
    for ($i = 0; $i < $anzahl_POST; $i++)
    {
        $_POST[$i] = mysql_real_escape_string($_POST[$i]);
    }
    ?>
    --> Leider funktioniert das so nicht, da die Felder des $_POST Arrays nun mal nicht numerisch sind...

    Frage:
    Wie kann ich das ganze trotzdem in eine Schleife einbauen?
    Geht das überhaupt?
    Oder muss ich jedes $_POST Feld einzeln prüfen?

    Vielen Dank im Vorraus für jede Antwort!

  • Gast-Avatar
    Ein Gast antwortete

    Na klar, sorry, da hatte ich wohl ein Brett vorm Kopf

    VIELEN DANK !

    Einen Kommentar schreiben:


  • Chr!s
    antwortet
    Nöja, vielleicht
    mysql_real_escape_string($tb_name_03) ...
    mysql_real_escape_string($tb_name_02)... ?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    PHP-Code:
    <?php
        $_POST 
    array_map('mysql_real_escape_string'$_POST);
    ?>
    Ist wunderbar!
    DANKE!

    Eine Frage hab ich aber noch zum Thema mysql_real_escape_string():
    Ich hab einen Query der sich auf Daten bezieht, die ' (Hochkomma) enthalten können.
    Solange kein ' vorkommt gibt's kein Problem, wenn aber eins vorkommt, dann zerstört das aber meinen Query...
    Ich muss den Query also irgendwie escapen.
    So funktioniert es aber nicht:
    PHP-Code:
    <?
    $mysql = "SELECT t.IDENT, t.TITEL1, t.TITEL2, t.FAMNAME, t.VORNAME, t.VORNAME2, t.NAME2A, t.GEBNAME,
                     t.NAME3, t.TELEFON_2, t.TELEFON_MOBIL, t.FAX, t.BERUF, t.GEB_DATUM, t.GEB_ORT, t.TOD_DATUM,
                     t.TOD_ORT, t.GESCHLECHT, t.STAND, t.HAUSHALT, t.ANREDE, t.PARTNER, t.HOCH_DATUM, t.VATER,
                     t.MUTTER, t.EMAIL, t.WEB, t.ADRES_TEXT_M, t.SELECT0, t.EVI_STELLE, u.HAUSHALT, u.STRASSE,
                     u.PLZ, u.ORT, u.LAND, u.NATION, u.TELEFON_01
             FROM ".$tb_name_03." t LEFT JOIN ".$tb_name_02." u ON u.HAUSHALT = t.HAUSHALT
             WHERE ((t.FAMNAME = '".$option_f."' AND t.VORNAME = '".$option_v."' AND t. TITEL2 > '".$option_t."')
                 OR (t.FAMNAME = '".$option_f."' AND t.VORNAME > '".$option_v."')
                 OR (t.FAMNAME > '".$option_f."'))
                OR (t.FAMNAME = '".$option_f."' AND t.VORNAME = '".$option_v."' AND t. TITEL2 = '".$option_t."'
                                                AND t.IDENT > '".$option_id."')
             ORDER BY t.FAMNAME ASC, t.VORNAME ASC, t. TITEL2 ASC
             LIMIT 1";
    $mysql = mysql_real_escape_string($mysql);
    ?>
    denn dann werden ALLE ' (Hochkomma) maskiert...

    Weiß jemand wie ich NUR die in den Daten vorkommenden ' (Hochkomma) escapen kann?

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Du weist den Rückgabewert von mysql_real_escape_string() der Variablen $value zu? Diese wird aber nach dem Durchlauf der Schleife nicht mehr weiterverwendet. Um die Daten im $_POST-Array stehen zu haben, müsstest du es auch dem $_POST-Array zuweisen:
    PHP-Code:
    <?php
        
    foreach($_POST as $key => $value) {
            
    $_POST[$key] = mysql_real_escape_string($value);
        }
    ?>
    Wenn du PHP 5 benutzt, ist es einfacher die foreach-Schleife so zu verändern, dass $value als Referenz behandelt wird:
    PHP-Code:
    <?php
        
    foreach($_POST as &$value)
            
    $value mysql_real_escape_string($value);
    ?>
    Noch einfacher wäre dann sogar array_map():
    PHP-Code:
    <?php
        $_POST 
    array_map('mysql_real_escape_string'$_POST);
    ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    1000 Dank!

    Nur eines ist seltsam:
    PHP-Code:
    <?
    foreach($_POST as $value)
    {
        $value = mysql_real_escape_string($value);
    }
    ?>
    --> es sollten nun eigentlich alle ' Zeichen (Hochkomma) durch \' ersetzt werden.
    zB aus Ludwig's Bar sollte Ludwig\'s Bar werden
    es wird aber Ludwig's Bar daraus, also ändert sich nichts...

    Wo liegt da mein Denkfehler?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Wie kann ich das ganze trotzdem in eine Schleife einbauen?
    foreach() oder so ?

    Einen Kommentar schreiben:

Lädt...
X