Mahlzeit Helmut,
Meine Frage ist gelöst und der Code sieht so aus:
Jein. Darf ich noch ein paar Verbesserungsvorschläge anbringen?
<html><head><title>Quadrat</title>
Es fehlt die Angabe eines http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=Dokumenttyps.
<?php
if (! isset($_POST["x"])){$_POST["x"]=3.1415;};
?>
Grundsätzlich ist es eine sinnvolle Idee, beim Programmieren von Skripts nach dem EVA-Prinzip vorzugehen: (E)ingabe, (V)erarbeitung und (A)usgabe
Das bedeutet, dass Du zu Anfang eventuelle Parameter ermittelst und vorbereitest, anschließend mit Ihnen irgendetwas tust und erst zum Schluss die Ausgabe vornimmst. Das macht den Code insgesamt übersichtlicher und lesbarer.
Dein Beispiel sähe dann z.B. folgendermaßen aus:
<?php[code lang=php]
// (E)ingabe
if (!isset($_POST["x"])) {
$_POST["x"] = 3.1415;
}
// (V)erarbeitung
$x = floatval($_POST['x']);
$x_quadrat = $x * $x;
// (A)usgabe
~~~?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Quadrat</title>
</head>
<body>
<form name="Formular" method="post" enctype="multipart/form-data">
x = <input type="text" name="x" value="<?php` print(htmlspecialchars($_POST["x"])); `{:.language-php}?>" />
y = x^2 = <?php` print($x_quadrat); `{:.language-php}?>
</form>
</body>
</html>[/code]
> $x=$\_POST["x"];
Dieses Umkopieren ist vollkommen überflüssig.
> print('y = x^2 = ' . $x\*$x);
Diese Anweisung hingegen ist fehlerträchtig - weißt Du genau, dass im POST-Parameter namens "x" nur Zahlen enthalten sein können? Du solltest den Inhalt [mittels einer geeigneten Funktion](http://de.php.net/manual/de/function.floatval.php) in den richtigen Typ konvertieren, bevor Du mathematische Operationen damit ausführst.
> Das erscheint mir als angemessene Lösung, wobei ich Besonderheiten wie enctype="multipart/form-data oder htmlspecialchars() gläubig hinnehme,
Warum? Du kannst Dich darüber doch <http://de.selfhtml.org/html/formulare/definieren.htm#bereich@title=jeweils> [informieren](http://de.php.net/manual/de/function.htmlspecialchars.php) ...
> Wie ein Saboteur in mein "x =" eine Tretmine (js-Script) einbauen kann, ist mir unklar,
Angenommen, jemand ruft Dein Formular auf. Angenommen er gibt in das Eingabefeld mit dem Namen "x" irgendetwas ein. Angenommen Du gibst das, was Du per POST entgegennimmst ohne weitere Prüfung einfach mittels echo oder print() aus ...
Probier's doch mal: bau in Dein Formular irgendwo ein einfaches "`printf($_POST['x']);`{:.language-php}" ein und gib in das Textfeld Folgendes ein:
<script>alert('Ätsch!');</script>
> aber das brauche ich jetzt vielleicht auch gar nicht zu wissen.
Doch - Du solltest Dich so früh wie möglich über eventuell vorhandene Sicherheitslücken bzw. Angriffsmöglichkeiten informieren.
MfG,
EKKi
--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|