dedlfix: Objekte: Löschfkt. mit vorlöschen

Beitrag lesen

Hi!

Wie schaut es denn mit der Beachtung des Kontextwechsels aus?
Habe nochmal drüber gekuckt daran kanns nicht liegen.

Nein, aber das ist ein Programmierfehler, der sicherheitskritisch ist. Das hat mit deinem Problem nichts zu tun, trotzdem erwähne ich auch solche mir auffallenden Fehler.

if (!$this->ddate == '0') {  

Ein Operator reicht: $this->ddate != '0'
ja hatte mal gelesen das !$var == 'wert' schneller sein soll als != aber das ist leider auch nicht der fehler

Sowas kostet maximal eine unerhebliche Zeiteinheit und geht üblicherweise im Grundrauschen unter. Wenn du mit solcher Mikrooptimierung etwas gewinnen willst, braucht es meist eine sehr hohe Anzahl an Operationen, bevor man etwas zu spüren bekommt.

Habe jetzt mal mit debug_[print_backtrace()] probiert und folgendes bekommen, als ich es zu in die Fkt. goDelete() geschrieben habe:
#0  Blackboard->goDelete() called at [/var/www/web272/html/community/blackboard.php:207]
#1  include(/var/www/web272/html/community/blackboard.php) called at [/var/www/web272/html/index.php:81]

Das ist kein PHP-Code, also bringt es auch nichts, es für dieses Forum als solchen zu kennzeichnen.

So warum wird die Fkt. jetzt einmal in meiner blackboard.php ausgeführt und dann nochmal bei der index.php wenn ich die blackboard.php include?

Das ist der aktuelle Aufruf-Stack und keine History über vergangene Aufrufe. Es wurde also zunächst in index.php ein include blackboard.php ausgeführt und dort drin stand der goDelete()-Aufruf. Zu sehen sind auch die Zeilennummern, in denen die Aufrufe stehen. Noch deutlich mehr Information liefert debug_backtrace(), dessen Rückgabe du mit print_r() anzeigen lassen kannst.

Wenn du auch mit diesem keine verdächtigen Parameterwerte siehst, dann ist der zweite Aufruf nicht in diesem Scriptaufruf erfolgt. Kontrollausgaben der strategisch wichtigen Variableninhalte und Funktionsergebnisse (mit var_dump()) können ebenfalls noch Auskunft über die Richtigkeit der Verarbeitung geben. Sollte sich herausstellen, dass alles ordnungsgemäß durchgelaufen ist, kann es nur an einem zweiten Script-Aufruf liegen, den du so nicht siehst. Deswegen erwähnte ich die Webserver-Logfiles, die die Aufrufe dokumentieren.

Lo!