access_time Geschätzte Lesezeit ca. Minuten In diesem Artikel möchte ich dir näherbringen wie du HTML-Formular-Elemente mittels PHP auswerten kannst. Falls du dich jetzt fragst, wofür du das brauchst, lass es mich an ein paar Beispielen erklären. Du willst einen Konfigurator für Autos oder Häuser machen? PHP: Alle POST-Variablen durchlaufen. Du willst ein Pizza-Bestell-Formular erstellen, das man auch absenden kann? Genau in solchen Fällen brauchen wir Formulare; aber was bringen Formulare, die wir nicht verarbeiten können, um sie in einem CRM (Customer relationship management) zu verarbeiten oder an einen Lieferanten per Mail automatisiert zu senden? In diesem Artikel lernst du wie du Formulare mittels PHP auswerten kannst, um genau dies zu tun! Als erstes werfen wir einen Blick auf das HTML und dann gehen wir über zum PHP. Formular HTML Aufbau Ein Formular kann wie im folgenden Beispiel aussehen. Die Action ist immer der Ort, wo das Formular verarbeitet wird. Diese muss nicht immer eine andere Seite sein, sie kann auch dieselbe Seite sein, oder mittels AJAX im Hintergrund stattfinden.
Ist natürlich etwas aufwendig dafür aber sehr sicher. 13-09-2005, 06:52 ghostgambler Registriert seit: Jul 2004 Ort: DE - NRW Beiträge: 4. 620 Zitat: Original geschrieben von ExInfernis wiedermal ein perfekter Overkill für die Datenbank, bei einem größerem (großen) Projekt 13-09-2005, 10:18 kaguya Newbie Registriert seit: Apr 2004 Beiträge: 132 das wollte ich auch gerade sagen man sollte immer versuchen möglichst wenige queries zu benutzen, das was du machst kannst du sicherlich auch mit textdateien oder ganz anders lösen. 13-09-2005, 17:58 Original geschrieben von kaguya das was du machst kannst du sicherlich auch mit textdateien das ist genauso der perfekte Overkill für das Filesystem 13-09-2005, 18:28 Die Db ist nur klein und steht auf nem eigenen Server. Hatte einfach Lust es umzusetzen. Lektion 50: $_POST - Formular mit Checkbox und Radio - Button auswerten. 13-09-2005, 18:53 kannst du ja auch tun, aber für 120%-Projekte/Server sind solche Spielereien nichts 13-09-2005, 20:59 naja dann eben ganz ohne speichern ich meinte nur das es im filesystem besser ist als in ner db, mysql hält bekanntlich nicht viel aus 13-09-2005, 21:07 mysql hält bekanntlich nicht viel aus Woher hast du das denn?
");}? > HTML-Code: Ausgabe Sie sind als Admin eingeloggt! 4. Beispiel: extract() mit EXTR_SKIP Um die Sicherheitsprobleme beim Extrahieren von Variablen aus $_GET/$_POST zu umgehen, kann das Flag EXTR_SKIP verwendet werden. Php $_POST Inhalte prüfen. Wird dieses an extract() übergeben, dann werden Variablen nur extrahiert, falls diese noch nicht definiert sind. Es kommt also nicht zu Überschreibungen bereits existierenden Variablen. Das vorherige Beispiel, erweitert um EXTR_SKIP erzeugt daher diesmal die gewünschte Ausgabe, da der Wert in $adminPassword nicht mehr überschrieben wird: // hier wurde EXTR_SKIP hinzugefuegt extract($_POST, EXTR_SKIP); HTML-Code: Ausgabe Falsches Admin-Passwort! 5. Beispiel: Eigene extract-Funktion Die Funktion extract() lässt sich mit wenigen Zeilen Code nahezu funktionsgleich nachbauen. Das folgende Beispiel zeigt die Funktion myExtract(), welches alle Schlüssel-Wert-Paare aus einem übergebenen Array ausliest und in das $GLOBALS array schreibt. Auf diese Weise kann im globalen Geltungsbereich direkt auf die Variablen zugegriffen werden (aus $_GET['do'] wird zum Beispiel $do).
(PHP 4 >= 4. 1. 0, PHP 5, PHP 7, PHP 8) $_SESSION — Sessionvariablen Beschreibung Ein assoziatives Array, das die Sessionvariablen enthält und dem aktuellen Skript zur Verfügung stellt. Lesen Sie den Abschnitt Sessionfunktionen der Dokumentation, um weitere Informationen zur Verwendung zu erhalten. Anmerkungen Hinweis: Dies ist eine 'Superglobale' oder automatisch globale Variable. Dies bedeutet, dass sie innerhalb des Skripts in jedem Geltungsbereich sichtbar ist. Php alle post variablen ausgeben. Es ist nicht nötig, sie mit global $variable bekannt zu machen, um aus Funktionen oder Methoden darauf zuzugreifen. Siehe auch session_start() - Erzeugt eine neue Session oder setzt eine vorhandene fort Tugrul ¶ 7 years ago Creating New Session ========================== php session_start (); $_SESSION [ "newsession"]= $value;? > Getting Session $_SESSION [ "newsession"]= $value; echo $_SESSION [ "newsession"];? > Updating Session $_SESSION [ "newsession"]= $updatedvalue;? > Deleting Session unset( $_SESSION [ "newsession"]);?
In unserem PHP Skript können wir mit $_POST['feld'] das Array empfangen und auf die übertragenen Werte zugreifen: // einen einzelnen Wert ausgeben echo $_POST['feld'][0]; Das erste Array-Feld aus unserem Formular hat dabei den Index 0, das zweite 1 und so weiter. In unserem Beispiel greifen wir demnach mit $_POST['feld'][0] auf den Wert, den der Nutzer in das erste Feld eingetragen hat zu. Wir können mit dem Array wie mit einem ganz normalen Array in PHP arbeiten: // alle Daten in einem Array empfangen $felder = $_POST['feld']; //alle Daten ausgeben / verarbeiten foreach ($felder as $value) { echo $value;} In diesem Beispiel weisen wir $_POST['feld'] zum Beispiel einer Variable zu und durchlaufen danach das Array Element für Element. Wir ersparen uns hier also die Arbeit, jedes Feld einzeln ansprechen und auslesen zu müssen. Namen für die Felder im Array In unserem ersten Beispiel haben wir durch das Schreiben von [] eine numerisch indizierten Array bekommen.
833 Selbst wenn versteckte Befehle drin stehen, musst ja nicht alles verarbeiten. Deine Anwendung benutzt $_POST["user"] und $_POST["pass"] warum sollte dich ein (wie auch immer) eingeschleustes $_POST["format C:"] interessieren? Kannst z. B mit print_r($_POST) auch gerne mal nachsehen ob da was nicht gewolltes drinsteht... __________________ gruss Chris Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut. " 12-09-2005, 23:23 westberlin Member Registriert seit: Dec 2002 Ort: bln / fhain Beiträge: 336 Ich pr üfe meisten so: 3 Beispiele mit errorhandling... [pseudo] PHP-Code: $checked_plz = isset( $_POST [ 'plz'])? $_POST [ 'plz']+ 0: 0; if ( $checked_plz == 0 || strlen ( $_POST [ 'plz'])! = 5){ $error [] = 1;} $mobil = 0; if ( $_POST [ 'mobil'] == 1){ $mobil = 1;} if(! preg_match ( '/^[a-zA-ZäöüÄÖÜ\/ -]{3, 30}$/', $_POST [ 'name'])){ $error [] = 4;} if( count ( $error) > 0){ $code = implode ( '-', $error); if( in_array ( 1, $error)) echo "*plz nicht korrekt!
"; // evtl.