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