Nein, mit der GD hat das nichts zu tun.
Und dass das Notice weg geht, wenn du error_reporting entfernst ist logisch, da das Ziel von error_reporting(E_ALL) war, alle Fehler, Warnungen und anderes, was das Skript fabriziert, auszugeben. Diese Notice habe ich allerdings nicht erwartet^^
EDIT: Ich habe den Fehler. Du prüfst den Sicherheitscode in der Funktion. Beim ersten Aufruf prüft er ganz normal ob der Sicherheitscode korrekt ist. Wenn nein, dann Fehler, wenn ja, dann löscht er $_SESSION['captcha_spam'].
Und dann rufst du die selbe Funktion erneut auf => Er prüft mir Nullstring => Immer false => Fehlermeldung.
Das heißt es gibt zwei Lösungen:
1. Du setzt die Abfrage außerhalb der Funktion
2. Du entfernst das unset($_SESSION...)
Dann müsste es funktionieren.
