Notice: Meldung und ich weis nicht wiso!

fanste hat gesagt.:
Man könnte doch auch am Anfang der Seite noch ein
error_reporting(0)
setzten, um eventuell auftauchende Meldungen, von denen man noch nichts weiß (oder so), zu verhindern? Zählt das auch zum unsauberen programmieren?
Auf der fertigen Seite kann man das machen. Das dient dann dazu, dem User kryptische Fehlermeldungen zu ersparen. Während der Entwicklung ist das natürlich fatal, da man überhaupt keine Hinweise mehr erhält, wenn man fehlerhaftes Verhalten feststellt.
Eine Möglichkeit wäre auch mit [phpf]set_error_handler[/phpf] eine eigene Fehlerverarbeitung zu machen, um dem User je nach Fehler entsprechende Hinweise zu geben (Fehler in DB, Allg. Serverfehler, etc.), die Fehlermeldung zu unterdrücken oder sicherheitshalber das Skript (ggf. mit entsprechender Meldung) abzubrechen.

Gruß hpvw

EDIT: Hehe, da ist ja einer noch radikaler als ich :)
 
hpvw hat gesagt.:
EDIT: Hehe, da ist ja einer noch radikaler als ich

Wenn du damit mich meinst, kann sein! Das habe ich mir mal gesucht, als ich in einem Script immer die Meldung kam, dass eine Variable nicht vorhanden wäre. Das war aber nicht richtig und wusste daher auch nicht, wie ich den Fehler los werde. Tja, nach diesem kleinen Schritt, hatte ich die Meldung nie wieder! :D
 
Nein ich meinte das hier:
Jörg Rißmann hat gesagt.:
Ja, zählt dazu. Wenn du beim Daimler die Tankinhalts anzeige ignoriest, fährt er auch weiter....

Sauber programmieren bedeutet unter anderem, das Skripte in -fast- jeder Umgebung lauffähig sind/sein sollten.
 
Da bei mir die zeit drängt und ich auch nict so ein kenntnis habe! Habe ich mich für das @ entschlossen! Vorrübergehnde denn ich will suber schreiben!

Dabke für die Hilfe!
 
Hallo, ich habe auch das Problem, dass ich immer diese Meldung angezeigt bekomme.

Nun habe ich aber kein Zugriff auf die php.ini (webspace).

Und ein @ Zeichen will ich nicht vor jede Zeile machen die es betrifft. Gibt es da aus dem PHP-Script heraus eine Möglichkeit, dies zu unterdrücken?
 
Auch fuer Dich wird wohl isset() die Loesung sein.
Zeig doch mal bitten den betreffenden Code.

Unterdruecken kann man nur mit @, aber davon sollte man in der Regel absehen.
 
Den Code zu zeigen würde den Rahmen sprengen, da das Framework prinzipiell so aufgebaut ist das es so funktioniert. Im Prinzip ist der Code quasi so, wie er im Ausgangsthread steht.

Es gibt sehr viele Stellen, wo das auftritt.

Beispielsweise deklariere ich in einem script eine Variable. Dieses wird in ein anderes Script includet und ist demzufolge 100%ig gesetzt. Auch auf Session Variablen wird teilweise zugegriffen, die an den Stellen auch gesetzt sein müssen und es auch sind.

Nun das ganze Framework so umzubauen und überall das isset rein zu knallen halte ich für etwas zu zeitaufwendig. Das ganze funktioniert auch einwandfrei, nur halt die Notice meldungen stören auf dem Webspace anbieter.

Es gibt ein Script, welches immer includet wird. Kann man da vielleicht sagen, dass Notice Meldungen nicht ausgegeben werden sollen? Also ohne ein @ davor zu machen.


Sicher wäre es die beste Lösung, das mit isset zu machen und auf nummer sicher zu gehen (was aber nicht nötig ist, da die Variablen vorhanden sind). Gibt es da keine Möglichkeit? Bsp Exception Handler oder sonstiges?
 
Waeren die Variablen wirklich vorhanden gaebe es keine Notice. Du kannst PHP da schon vertrauen wenn es Dir sagt "is nich da", dann "is auch nich da".

Ein Script brauchst Du da nicht, aber die Funktion error_reporting() koennte Dir helfen, aber auch das ist nicht ganz das was man dafuer nutzen sollte. Wie gesagt, isset() waere die beste Loesung.
 
Nun habe ich gerade noch einmal genauer geschaut bei mir und ich stimme dir zu

Also ich mache eine Abfrage
Code:
if(isset($_POST['login']) or $_SESSION['login_ok']==true){
  // mache dies und das.
}

Nun gebe ich dir in dem Punkt recht und da berichtige ich mich in meinem vorherigen Post, dass $_SESSION['login_ok'] beim aller aller ersten mal nicht gesetzt ist (beim ersten mal ist es der erste teil, der gesetzt ist), sondern erst in dem <//mache dies und das Teil> gesetzt wird. Wenn der User eingelogged ist, ist die Variable dann immer gespeichert.

Nun frage ich einfach mal, wie ich das sonst machen könnte/sollte.
Code:
if(isset($_SESSION['login_ok'])){
  		if($_SESSION['login_ok']==true){
  			$sess = true;
  		}else{
  			$sess = false;
  		}
  	}else{
  		$sess = false;
  	}
	if(isset($_POST['login']) or $sess){
So? Das würde das Script ja nur unnötig länger und unüberschaubarer machen.
 
Du kannst das zusammenfassen.
PHP:
if ((isset($_SESSION['login_ok'])) && ($_SESSION['login_ok']==true))
Wenn der erste Wert false ergibt, also $_SESSION['login_ok'] nicht gesetzt ist, wird die 2. Pruefung garnicht erst durchgefuehrt.
 
Zurück