php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.11.2005, 11:54  
Gast
 
Beiträge: n/a
Standard 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!
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.11.2005, 12:17  
Gast
 
Beiträge: n/a
Standard

Zitat:
Wie kann ich das ganze trotzdem in eine Schleife einbauen?
foreach() oder so ?
 
Alt 23.11.2005, 12:42  
Gast
 
Beiträge: n/a
Standard

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?
 
Alt 23.11.2005, 13:31  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

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);
?>
xabbuh ist offline  
Alt 23.11.2005, 14:22  
Gast
 
Beiträge: n/a
Standard

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?
 
Alt 23.11.2005, 14:28  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Nöja, vielleicht
mysql_real_escape_string($tb_name_03) ...
mysql_real_escape_string($tb_name_02)... ?
Chr!s ist offline  
Alt 23.11.2005, 14:31  
Gast
 
Beiträge: n/a
Standard


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

VIELEN DANK !
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
geladene daten aus einer schleife in die datenbank speichern Bonaparte PHP Tipps 2008 2 05.09.2007 22:26
Schleife nach Tastendruck beenden schnurzli PHP Tipps 2006 7 24.03.2006 18:56
Warum wird die erste Schleife nur einmal durchlaufen ? PHP Tipps 2006 12 03.03.2006 20:04
array als Schleife verwenden cyberholic Datenbanken 6 12.01.2006 13:14
Schleife nur 1x durchlaufen PHP Tipps 2007 9 16.12.2005 13:44
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
for Schleife -> unterbrechen, Befehl einfügen, fortsetzen PHP Tipps 2005-2 7 10.10.2005 21:05
while schleife in einer while schleife beim tmpl-sys PHP Tipps 2005-2 0 27.07.2005 15:07
While Schleife Beatbox Off-Topic Diskussionen 8 19.05.2005 21:55
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
schauderhafte Schleife PHP Tipps 2005 5 16.03.2005 21:47
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
Variabel aus while schleife ausserhalb der schleife nutzen PHP Tipps 2005 8 12.02.2005 18:04
versteh diese do-while schleife nicht PHP Tipps 2004 5 08.09.2004 16:54
Die Schleife läuft eine Ehrenrunde zu viel bei feof() PHP Tipps 2004 1 13.06.2004 18:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
formularfelder nicht einzeln überprüfen php, php $_post per schleife prüfen, $_post schleife prüfen, http://www.php.de/php-tipps-2007/34080-formularwerte-schleife-ueberpruefen.html, foreach schleife unterbrechen und beim nächsten durchlauf fortsetzen php

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.