Firefox setzt unnötige Notiz

Hallo,

ich habe ein kleines Problem mit Firefox (ist auch bei Chrome, Internetexplorer, Safari und Opera so) es schreibt mir immer hin, dass eine variable nicht Definiert wurde. Dabei soll die Definition ja durch die Eingabe erfolgen:

[ATTACH]1926.vB[/ATTACH]

Das ist nicht besonders schlimm nur nervig :evil:. Sobald ich jedoch die Daten eingegeben habe gibt er alles normal aus.

hier der Quellqode:

[PHP]

<?php if (array_key_exists('geschlecht', $_GET)) { $geschlecht = $_GET['geschlecht']; $koerpergroesse = $_GET['koerpergroesse']; $gewicht = $_GET['gewicht']; $normalgewicht = $koerpergroesse - 100; $idealgewicht = $normalgewicht - 15.0 / 100.0 * $normalgewicht; //berechnung des gewichtgrenzwertes $grenze_hohe_lebenserwartung = $normalgewicht * 1.1; $grenze_niedrige_lebenserwartung = $normalgewicht * 2.1; // sammeln der infos die zur berechnung notwendig sind } else $gewicht = $_GET['gewicht']; { $koerpergroesse = $_GET['koerpergroesse']; $gewicht = $_GET['gewicht']; $normalgewicht = $koerpergroesse - 100; $idealgewicht = $normalgewicht - 10.0 / 100.0 * $normalgewicht; //berechnung des gewichtgrenzwertes $grenze_hohe_lebenserwartung = $normalgewicht * 1.1; $grenze_niedrige_lebenserwartung = $normalgewicht * 2.1; // sammeln der infos die zur berechnung notwendig sind } ?> New Document Broca-Formel - Eingabeformular
Körpergröße: cm
Gewicht: kg
weiblich
männlich
<?php if (array_key_exists('geschlecht', $_GET)) { if ($_GET['geschlecht'] == 'w') { echo "Geschlecht: weiblich

"; } else { echo " Geschlecht: männlich

"; } echo "Körpergröße: $koerpergroesse cm

"; echo "Normalgewicht: $normalgewicht kg

"; echo "Idealgewicht: $idealgewicht kg

"; if ($gewicht < $idealgewicht) { echo "Sie haben Untergewicht"; } elseif ($gewicht >= $idealgewicht AND $gewicht <= $grenze_hohe_lebenserwartung) { echo "Sie haben eine hohe Lebenserwartung"; } elseif ($gewicht > $grenze_hohe_lebenserwartung AND $gewicht <= $grenze_niedrige_lebenserwartung) { echo "Sie haben Normalgewicht"; } else { echo "Leider sind Sie zu klein für ihr Gewicht."; } } ?>

zurück [/PHP]

Das hat nichts mit Browsern zu tun, das ist eine Meldung die vom PHP-Parser auf dem Server kommt.

Die Meldung betrifft diese Zeilen

[php]$gewicht = $_GET[‚gewicht‘]; {
$koerpergroesse = $_GET[‚koerpergroesse‘];
$gewicht = $_GET[‚gewicht‘];[/php]

die wie Du hoffentlich sehen kannst auch so nicht richtig sind an der Stelle. Sie werden immer dann geladen, wenn das Formular noch nicht abgeschickt wurde. Folglich steht dann auch nicht „gewicht“ im $_GET-Array.

Du hast 2 Möglichkeiten:

  • error_reporting und display_errors abschalten
  • oder vor diese 2 Zeilen die Bedingung

[php]if( isset($_GET[„gewicht“]) ){…[/php]

setzen.

Das ist (wie Du ja auch schreibst) kein Firefox spezifisches Problem.

Die Warnungen ruehren daher, dass Du auf Indizes in der [FONT=Courier New]$_GET[/FONT] Variable zugreifen willst, die nicht existieren. Sobald Du das Formular abgeschickt hast, sind diese Indizes vorhanden, also verschwinden auch die Warnungen.
Ueberpruefe zum Beispiel mittels [FONT=Courier New]isset()[/FONT] ob der Index existiert.

Ausserdem hast Du einen moeglichen Angriffspunkt in Deinem Code: [FONT=Courier New]$_SERVER[‚PHP_SELF‘][/FONT] kann durch den Benuzter manipuliert werden, mit einer URL wie [FONT=Courier New]index.php/"%20onsubmit=„alert(‚XSS‘)“[/FONT] das solltest Du entsprechend noch absichern.

Edit: Zeitlich Ueberschneidung mit threadi.

Vielen danke threadi und teeny!

Eure Beiträge haben mir sehr geholfen. Ein bischen peinlich ist es mir schon. Zumal das ja logisch ist das ich bei der 2. Abfrage auch abfragen muss ob die Variable definirt wurde FAIL :wink:

Teeny ich weiß dass es durch den Benutzer manipulirt werden kann. Die Seite wird nicht online gestellt, sie dient rein zur Übung aber danke trotzdem für den Hinweis:)

lg