• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

formularauswertung auf einer php seite

Corraggiouno

Mitglied
hi,

kann mir jemand einen Tipp geben wie ich eine Formularauswertung auf einer Seite hinbekomme
Code:
<html>
<body>
<form action="seite.php" methode="post">
<p>Vorname: <input type="text" value="vn"</p>
<p>Nachname: <input type="text" value="nn"</p>
</form>
</body>
</html>

Was muss ich nun in php definieren, so dass der vorname und nachname auf der Seite seite.php ausgegeben werden?
 
erstmal brauchst du in deinem formular noch einen submit button und du musst den input-feldern einen namen geben:

HTML:
<p>Vorname: <input type="text" value="vn" name="vn"></p> 
<p>Nachname: <input type="text" value="nn" name="nn"></p>
<P><input type="submit" name="send" value="Absenden"></p>
in die datei "seite.php" schreibst dann das:

PHP:
<?php
if($_REQUEST['send']) {
$vorname = $_POST['vn'];
$nachname = $_POST['nn'];
echo "Vorname: $vorname<br>\nNachname: $nachname";
}
?>
 
aah, danke für den Tipp; kannst du mir den Unterschied noch zwischen dem
Code:
[COLOR=#FF8000]value=[COLOR=#0000FF]"vn"[/COLOR] name=[COLOR=#0000FF]"vn"[/COLOR][/COLOR]
sagen? value benötige ich doch für unten, also für POST, aber für was benötige name="vn"?

ich hätte aber gerne, das das Formular (html) und der php-code in einer Datei (seite.php) stehen.

Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.
Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.
Denn ansonsten sind Ihre Programme leichter angreifbar, weil so ein Hacker gegebenenfalls gezielt Ihr Skript eigene Variablenwerte einschleusen kann.
Ist da was dran?
 
Zuletzt bearbeitet:
richtig, value kannst du weglassen. Das ist der Start-Inhalt, der beim laden der Seite im Input erscheint. Wenn du es weglässt, bleibt das Input einfach leer.

Code, um es in einer Seite zu machen:

Code:
<html> 
<body> 
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" methode="post">
[COLOR=#000080]<p>[/COLOR]Vorname: [COLOR=#FF8000]<input type=[COLOR=#0000FF]"text"[/COLOR] name=[COLOR=#0000FF]"vn"[/COLOR]>[/COLOR][COLOR=#000080]</p>[/COLOR]  
[COLOR=#000080]<p>[/COLOR]Nachname: [COLOR=#FF8000]<input type=[COLOR=#0000FF]"text"[/COLOR] name=[COLOR=#0000FF]"nn"[/COLOR]>[/COLOR][COLOR=#000080]</p>[/COLOR]
[COLOR=#000080]<p>[/COLOR][COLOR=#FF8000]<input type=[COLOR=#0000FF]"submit"[/COLOR] name=[COLOR=#0000FF]"send"[/COLOR] value=[COLOR=#0000FF]"Absenden"[/COLOR]>[/COLOR][COLOR=#000080]</p>
[/COLOR]</form>
<?php[COLOR=#007700]
if([/COLOR][COLOR=#0000BB]$_REQUEST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'send'[/COLOR]]) {
[COLOR=#000000][COLOR=#0000BB]$vorname [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'vn'[/COLOR][COLOR=#007700]];
[/COLOR][COLOR=#0000BB]$nachname [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'nn'[/COLOR][COLOR=#007700]];
echo [/COLOR][COLOR=#DD0000]"Vorname: [/COLOR][COLOR=#0000BB]$vorname[/COLOR][COLOR=#DD0000]<br>\nNachname: [/COLOR][COLOR=#0000BB]$nachname[/COLOR][COLOR=#DD0000]"[/COLOR][COLOR=#007700];
}
[/COLOR][COLOR=#0000BB]?>[/COLOR] [/COLOR] 
</body> 
</html>
 
habe das ganze gerade getestet: leider wird die Bezeichnung Vorname und Nachname ausgegeben: nicht aber die eingegebenen Namen......
.................kann ich auch das ganze oder die if-Abfrage realisieren?
Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.
Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.
Denn ansonsten sind Ihre Programme leichter angreifbar, weil so ein Hacker gegebenenfalls gezielt Ihr Skript eigene Variablenwerte einschleusen kann.
bin per Google auf die Aussage gestoßen. Ist da was dran? Für was benötige ich $_REQUEST?
 
PHP: $_REQUEST - Manual
Natürlich kannst du daraus auch $_GET machen
Probiers mal so:

HTML:
<html> 
<body> 
<form action="<?php echo$_SERVER['PHP_SELF']; ?>" methode="post">
<p>Vorname: <input type="text" name="vn"></p>  
<p>Nachname: <input type="text" name="nn"></p>
<p><input type="submit" name="send" value="Absenden"></p>
</form>
<?php
if($_GET['send']) {
$vorname = $_GET['vn'];
$nachname = $_GET['nn'];
echo "Vorname: " . $vorname . "<br>\nNachname: " . $nachname;
}
?>  
</body> 
</html>
 
Zuletzt bearbeitet:
Da die Methode "post" ist, dürfte in $_GET nicht viel enthalten sein.
PHP:
extract($_POST);
/* Aus dem assoziativem Array $_POST werden Variablen abgeleitet,
somit $vn und $nn belegt. */
// Weitere Verarbeitung ...
 
Zuletzt bearbeitet:
Zum Thema Sicherheit:
$_SERVER['PHP_SELF'] bzw. PHP_SELF nicht benutzen, da es potenziell gefährlich sein kann. Z.B. durch Verwendung von: http://www.domain.com/foobar.php/"<iframe src=http://www.hackme.com></iframe>. kann ein iframe eingeschleust werden. action="" reicht völlig aus.

Außerdem die User-Eingaben bei der Ausgabe escapen:
echo "Vorname: ", htmlentities($vorname), "<br>\nNachname: ", htmlentities($nachname);

Wenn die Daten in eine Datenbank eingetragen werden soll, dann noch real_escape_string().
 
....................oder ich schreibe es einfach so
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<form action = "test.php" method = "POST">
<p>Vorname: <input name = "vn" /></p>
<p>Nachname: <input name = "nn" /></p>
<p><input type = "submit" /><input type = "reset" /></p>
</form>
<?php
print "Sie heißen " . $_POST["vn"] . " ". $_POST["nn"];
?>
</body>
</html>
 
Ich gehe meist so vor:

PHP:
if(!empty($_POST['send']) // 
{
// Werte die übergebenen Formulardaten aus
}
else
{
     // Baue das Formular auf
}
 
extract($_POST); AUF KEINEN FALL BENUTZEN! Das kann ebenfalls zu Sicherheitsproblemen führen!

Außerdem unbedingt meine Hinweise zum Escaping beachten!
 
was mich ein wenig wundert ist, das wenn ich die Seite auf meinem lokalen Webserver aufrufe phpinfo()..................
das folgende Meldungen ausgegeben werden:
Notice: Undefined index: vn in C:\xampp\htdocs\test\test.php on line 15
Notice: Undefined index: nn in C:\xampp\htdocs\test\test.php on line 15
Sie heißen

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<form action = "test.php" method = "POST">
<p>Vorname: <input name = "vn" /></p>
<p>Nachname: <input name = "nn" /></p>
<p><input type = "submit" /><input type = "reset" /></p>
</form>
<?php
print "Sie heißen " . $_POST["vn"] . " ". $_POST["nn"];
?>
</body>
</html>
Kann mir da jemand einen Tipp geben, warum die Fehlermeldungen erscheinen?
 
ok; also die Fehlermeldungen bekomme ich jetzt nicht mehr; aber was kann ich am Code ändern, damit der Text "Sie heißen" erst beim Betätigen des Submit-Buttons erscheint und nicht schon zuvor da steht?
 
mein aktueller code.....

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<form action = "test.php" method = "POST">
<p>Vorname: <input name = "vn" /></p>
<p>Nachname: <input name = "nn" /></p>
<p><input type = "submit" name="send"/><input type = "reset" /></p>
</form>
<?php
if(isset($_POST["send"]))
{
print "Sie heißen " . $_POST["vn"] . " ". $_POST["nn"];
}
?>
</body>
</html>
.....wenn ich nun die Zeile mit dem if (isset.....) einbaue, wird das "Sie heißen" nicht mehr angezeigt............kann mir jemand diesen Vorgang etwas genauer erklären?
 
Zuletzt bearbeitet:
Du hast in Post #13 nicht wirklich auf localhost verlinkt ? :D

.....wenn ich nun die Zeile mit dem if (isset.....) einbaue, wird das "Sie heißen" nicht mehr angezeigt............kann mir jemand diesen Vorgang etwas genauer erklären?

Ganz einfach, wenn das Formular, das ja den Submitbutton mit dem Namen "send" enthält, abgesendet wird, wird die Variable (oder auch Arrayelement :D ) $_POST['send'] initialisiert. Die Funktion isset() überprüft, ob die Variable existiert, wenn ja wird der print Befehl ausgeführt, falls nicht, wird er übersprungen.

Im Übrigen hatte genau das die Fehlermeldungen zur Folge, die beiden Variablen waren nicht vorhanden, weil das Formular ja gar nicht abgeschickt wurde.

Die beiden Variablen würde ich vor der Ausgabe noch einmal escapen, da sonst eine XSS Lücke entsteht:
PHP:
print "Sie heißen ".htmlspecialchars($_POST['vn'])." ".htmlspecialchars($_POST['nn']);
 
Zurück
Oben