PHP Formularproblem

Ich arbeite gerade ein PHP Buch durch (habe Erfahrung in Java und C++), bis jetzt verlief alles ganz ok. Doch heute bin ich auf ein kleines Beispiel gestossen, dass so bei mir nicht funktioniert und ich weiss nicht weshalb.

Ein php file: php1.php

PHP Less
Bitte tragen Sie zwei Zahlen ein und senden Sie das Formular ab.

Wert 1:
Wert 2:

und ein php file: help.php

<?php $erg = $w1 + $w2;
echo "Die Summe von $w1 und $w2 ist $erg"; ?\> Diese so steht es exakt im Buch. Bei mir ist jedoch die Ausgabe falsch: "Die Summe von und ist 0" Deshalb dachte ich werden die Werte ev. doch nicht übergeben (wie es sein sollte)? nun die schönste frage der informatik, woran kann es alles liegen? falls jemand informationen zum system braucht auf dem ich es betreibe: [www.rh-architektur.ch/php/info.php](http://www.rh-architektur.ch/php/info.php) vielen dank schon mal für die hilfe guido

Hi Guido,

<?php : $erg = $w1 + $w2;
echo "Die Summe von $w1 und $w2 ist $erg"; ?\>

Ahm … wirf das Buch weg :smile: Ne im Ernst… das Auslesen der Daten funktioniert so nur bei der Aktivierung der sehr unsicheren PHP-Option register_globals. Lies die Daten z.B. so aus:

<?php $w1 = (int)$_POST['w1'];
$w2 = (int)$\_POST['w2']; $erg = $w1 + $w2; echo "Die Summe von $w1 und $w2 ist $erg"; ?\> Die 'Überprüfung' der geposteten Daten ist so wie im Beispiel nur per cast etwas hingepfuscht, eigentlich muss der Prüfung der Benutzereingaben viel mehr Aufmerksamkeit zugebracht werden, sind diese doch das gefährlichste für das Skript. Z.B. Überprüfung ob die Variable gesetzt ist (isset($\_POST['w1'])), ob die Variable leer ist (strlen(trim($\_POST['w1']))) und ob es überhaupt eine Zahl ist (is\_numeric [Floats], is\_int [Ganzzahlen]), und dann entsprechend gehandelt werden (Default-Werte, Fehlerausgabe, etc.). Ciao Rudy PS: error\_reporting(E\_ALL); sollte immer die erste Zeile des Skripts sein - dann siehst Du viel mehr, was falsch läuft, auch wenn der Server per Default nur warnings oder gar nur errors ausgibt.

vielen dank.
so gehts dann auch. dann ist wahrscheinlich die option register_globals standardmässig nicht aktiviert bei mir.

grüsse

guido

hab gerade herausgefunden, dass in meinem serversystem folgendes eingestellt ist:

register_globals off

vielen dank nochmals und was das buch anbelangt ist man als anfänger natürlich aufgeschmissen wenn so etwas nicht funktioniert.

grüsse

guido

Hallo guido,

Ein php file: php1.php

Hiermit dürfte alles stimmen.

und ein php file: help.php

Hier sind schon „Fehler“. Und zwar steht bei deinen System-Informationen, dass du deine Register-Globals auf off hast. Das heißt, du kannst die Variablen nicht einfach so abrufen, wenn du sie per POST oder GET übermittelst. (sh. hier: http://www.php.net/manual/de/security.globals.php )
Ich werde deinen Code von der help.php mal verbessern, damit sollte es dann klappen.

<?php // Hier rufst du holst du die Variablen jetzt mit dem globalen Array $_POST rein:
$w1 = $\_POST['w1']; $w2 = $\_POST['w2']; $erg = $w1 + $w2; echo "Die Summe von $w1 und $w2 ist $erg"; ?\> Im Buch steht also nichts falsches. Es geht nur von anderen Sicherheitseinstellungen im System aus. > vielen dank schon mal für die hilfe No problem :wink: Liebe Grüße Woosh

Sry, da war ich wohl etwas langsam mit meiner Antwort :wink:

Liebe Grüße
Woosh