Kurioses Fehlverhalten meines Skriptes.

Da immer mehr Events auf Ivently eingestellt werden, dachte ich mir jetzt musst du langsam mit der Erweiterung der Seite anfangen.
Bei der Entwicklung ist mir ein Fehlverhalten begegnet, welches mich sehr verwirrt hatte.
Da ich recht lange gebraucht habe, um diesen Fehler zu finden, was übrigens ohne die Hilfe von Simon wohl noch länger gedauert hätte, möchte ich dieses Fehlverhalten mal genauer erklären.
Vieleicht hilft es ja zufällig jemandem.

Mein Ziel war es, einen Login zu erstellen, mit Allem was man benötigt.
Also im Grunde folgende Standartfunktionen.

  • Login
  • Registrierung (inkl. E-Mail-Bestätigung)
  • Passwort vergessen

Dank meiner Erfahrung stellt dies für mich kein wirkliches Problem dar und so war auch alles recht fix fertig programmiert.

Beim Testen hat sich dann folgendes Fehlverhalten dargestellt.
Bei der Registrierung bekam der User 1 Mail. (so wie gewollt)
Der User hatte sein Passwort vergessen, er fodert daher ein neues an.
Auch hier bekahm der User genau eine Mail. Diese Mail muss der User erst bestätigen, bevor ich Ihm ein neues Passwort zusende.
Der User hat die Mail bestätigt und bekam genau 3 Mails mit unterschiedlichen Passwörtern.
Logischerweise funktionierte nur das letzte Passwort.

Da ich keine Schleifen verwendet habe (wofür auch), musste die Methode, die das neue Passwort erstellt und in die Datenbank speichert und dann per Mail verschickt aus irgend einem Grund 3 mal aufgerufen werden.

Mein erster Gedanke war mir den Backtrace ( debug_print_backtrace(); ) ausgeben zu lassen, weil irgendwo muss ich die Methode ja 3 mal aufgerufen haben.

Leider war das nicht der Fall und so ging die Suche weiter.
Der nächste Gedanke war es, dass es an meinem kurz davor programmiertern Router liegen könnte.
Aber eine Ausgabe von $_GET brachte erstmal nix ungewöhliches.

Hier gingen mir dann langsam die Ideen aus. Aus purer Ratlosigkeit habe ich mir dann $_GET mal in der Mail mit ausgeben lassen.

Tatsächlich war ich hier erstaunt, als ich sah, dass wie aus Zauberhand in der 2 und 3 Mail weitere Parameter
im Array $_GET standen. Plötzlich gab es im Array einen Eintrag wie [img] => favicon und noch eins war vorhanden, was ich jetzt aber nicht mehr weiß.

Dies brachte mich auf die Idee, dass die einbindung meines Favicons schuld war für dieses verhalten.
Eingebunden hatte ich es wie folgt:

<link rel="shortcut icon"  href="img/favicon.ico" type="image/x-icon" />

Da meine .htaccess alle Anfragen an die index.php weiterleitet, die dann von meinem Router verarbeitet werden, war natürlich klar, was los war.
Der Firefox lädt normal die Seite und lädt dann das Favicon.
Da die Anfrage für das Favicon dank .htaccess an die index.php weitergeleitet wird, wurde das ganze Skript ein weiteres mal ausgeführt.
Im Internet Explorer habe ich übrigens nur 2 Mails mit dem neuen Passwort erhalten.

Es scheint also so, dass der Firefox 2 mal versucht das Favicon zu laden und der Internt Explorer 1 mal.
Eine andere Erklärung hätte ich sonst nicht dafür.

Mein Fazit:
Hätte ich blos einen Absoluten Pfad angegeben, was ich jetzt natürlich gemacht habe.
Wahrscheinlich hätte ein Blick in den Firebug auch geholfen, aber wer denkt denn an sowas 🙂

1 Star2 Stars3 Stars4 Stars5 Stars (1 Stimme, durchschnittlich 5,00 / 5)
Loading...


Ein Kommentar zu “Kurioses Fehlverhalten meines Skriptes.”

  1. Der Firefox ruft http://www.domain.tld/favicon.ico ab wenn kein favicon angegeben ist ODER das angegebene nicht gefunden wurde (404, etc) / falscher medientyp ist ( z.b. eine html-datei oder sowas)

Hinterlasse einen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

»Informationen zum Artikel

Autor: Creator
Datum: 15.12.2009
Zeit: 17:45 Uhr
Kategorien: PHP
Gelesen: 3885x heute: 2x

Kommentare: RSS 2.0.
Diesen Artikel kommentieren oder einen Trackback senden.

»Meta