Formulardaten über globale Variablen auslesen

ihdnag8

Grünschnabel
hallo
ich möchte Formulardaten, die über die Methode POST gesendet wurden, in dynamische Variablen abspeichern. Nur irgendwie klappt es bei mir nicht, wenn ich die erzeugten variablen in eine von mir erstellte Funktion verwende, kriege die Fehlermeldung "Undefined variable" .

PHP:
if(isset($_POST["senden"])){

//Filter anwenden  und dynamische Variablen erzeugen
foreach ($_POST as $key=>$elemente){
	${"g_".$key} = daten_filtern($elemente);
}

//Prüft auf Fehler
function error_pruefen(){
	//Name Prüfen
	if(strlen($g_name) < 1){   //hier erhalte ich die Fehlermeldung Undefined variable: g_name
		$error_msg="Bitte geben Sie Ihren Namen an!";
	}
	if(strlen($g_inhalt < 1){   //hier ebenfalls Undefined variable: g_inhalt
		$error_msg.="<br>Bitte Tragen ";
	}
return $error_msg;  //ich erhalte hier auch die Fehlermeldung: Undefined variable: error_msg in(...)
}
}

Kann mir jmd. sagen wo ich ein Fehler mache:confused:

Danke im Voraus
 
Hallöchen!

Du musst deiner Funktion schon den Wert übergeben, damit sie damit etwas anfangen kann.
Kleine Frage:
Wo rufst du den die Funktion error_pruefen überhaupt auf?
Und:
Wozu eigentlich dynamische Variablennamen?
Oder:
Warum eine Funktion?

Mein Vorschlag:
PHP:
if(isset($_POST["senden"])){

//Filter anwenden  und dynamische Variablen erzeugen
foreach ($_POST as $key=>$elemente){
    ${"g_".$key} = daten_filtern($elemente);
   
    //Name Prüfen
    if(strlen($g_name) < 1){   
        $error_msg="Bitte geben Sie Ihren Namen an!";
    }
    if(strlen($g_inhalt < 1){   
        $error_msg.="<br>Bitte Tragen ";
    }
... // z.b. echo $err_msg;

} 
}

Viele Grüße,
Jacka
 
hallo danke für das schnelle Antworten.
ja du hast recht, ohne dass ich der Funktion Werte übergebe, klappts nicht.
ich habe die Überprüfung ohne eine Funktion durchführen lasse. War nicht so eine gute Idee dafür eine Funktion zu erstellen, da ichs je nur einmal brauche.
Jetzt klappt auch alles, außer bei header(Location: ...), ich sollte aber lieber ein neues Thema aufmachen

Gruß
 
Die header() Funktion hat die Eigenschaft nicht zu funktionieren, wenn eine Ausgabe vorher geschehen ist. D.h. du solltest erst deine Fehlerabfragen durchführen und dann die entsprechenden Ausgaben tätigen.
 
hallo
ich erhielt die Fehlermeldung headers already sent. Habs aber mit ob_start() und ob_end_flush() hinbekommen.:)
 
Hallo

das liegt eben daran wie das Watusimann bereits gesagt hat. Die header Funktion kannst du nur solange brauchen bis du das erste Zeichen an den Browser übergibst.

Also musst du es als allerstes im Browser schrieben noch bevor du <html> schreibst.
Nur dann hat es keinen Sinn.;) Aber als Beispiel.

Grz

scan
 
Zurück