phpbar.de logo

Mailinglisten-Archive

[php] Was stimmt mit meiner if(or) Anweisung nicht?

[php] Was stimmt mit meiner if(or) Anweisung nicht?

Yannik Hampe yannik at cipher-code.de
Mit Jul 9 18:33:07 CEST 2008



Christian Knorr wrote:
> Am Mittwoch 09 Juli 2008 17:54:29 schrieb Sebastian Mendel:
>>> Theoretisch schon. Aber dies war nur ein Beispiel. In Wirklichkeit wird
>>> meistens der value="" der Schaltfläche mit ausgewertet.
>> wo ist da der Unterschied? auch du müsstest du eigentlich erstmal prüfen ob
>> die Variable überhaupt existiert ... oder?
> Wie Du und andere wahrscheinlich auch schon bemerkt haben, bin ich noch nicht 
> sehr fit in Sachen PHP. Dies ist meine erste Anwendung - ohne Lehre ;-) 
> Deshalb bitte ich um Nachsicht wenn ich Blödsinn erzähle. Aber wenn ich doch 
> die Taste <input name=\"cancel\" type=\"submit\" value=\"Zurück\"> drücke, 
> und an entsprechender Stelle dies überprüfe mit
> if ( $_POST["cancel"] == "Zurück" ) {}
> Ist es dann nicht egal ob die Variable gesetzt ist oder nicht? Wenn sie nicht 
> gesetzt ist, ist sie ja auch nicht "Zurück", und es passiert nichts was in 
> der if Anweisung steht.
> Hab ich was falsch verstanden?

Teste mal folgendes Script:
---
error_reporting(E_ALL);
if ($ichExistiereNicht =="unsinn") ;
---
Um das kurz zu machen: Du wirst eine Fehlermeldung sehen. Nur eine 
Notice, die php nicht dazu bringt abzubrechen... Aber immerhin.

Dass es diese Notice gibt ist auch durchaus sinnvoll, denn dadurch, dass 
man auf Variabeln zugreift, die nicht existieren entstehen ganz schnell 
mal neue "Features" in einem Script. Nicht der Zugriff auf eine 
Variable, die nicht existiert grundsätzlich böse ist...
Aber es gibt ein paar andere dumme Sachen. Stell dir mal vor du 
schreibst irgendwo
$sinnlos =1;
und irgendwo anders dann
if ($sinlos ==1)
Solche Fehler findest du dank der Notice sofort, wenn du mit 
error_reporting(E_ALL) entwickelst. Aber ohne suchst du möglicherweise 
sehr sehr lange.

In ganz ungünstigen Konstruktionen kann man sich so auch seine 
Sicherheitslücken bauen etc.
Und natürlich ist es auch einfach übersichtlicher isset oder empty zu 
verwenden: Du selbst oder ein anderer coder weiss dann beim lesen: Es 
kann sein, dass die Variable nicht gesetzt ist und du bist dir bewusst, 
dass dies passieren kann.

> 
> Chris.......

Yannik

php::bar PHP Wiki   -   Listenarchive