Gerade hatte ich einen Fehler beim Aufrufen einer URL aus einem Newsletter (versendet über direct_mail), in dem ich jumpurls nutze. Die URL war in dieser Form:
www.domain.de/index.php?id=2&rid=t_2&mid=2&aC=7a7f6b54&jumpurl=2 |
Allerdings wurden beim Redirect auf die eigentliche URL die Platzhalter, z. B. ###USER_uid###, nicht ersetzt. Also habe ich recherchiert, wo die jumpurls gespeichert werden. Ich bin davon ausgegangen, dass diese in einer Tabelle gespeichert werden. Das ist aber nicht der Fall, bei direct_mail werden die jumpurls mit der Funktion checkDataSubmission() verarbeitet:
- Anhand dem Parameter „mid“ wird der zugehörige Newsletter aus der Datenbank ausgelesen.
- In dem Newsletter wird anhand dem Parameter „jumpurl“ der zugehörige Link geholt, in unserem Beispiel also der zweite Link. Dieser sieht, wenn es sich um den Abmelden-Link handelt, beispielsweise so aus: www.domain.de/index.php?id=3&cmd=delete&aC=###SYS_AUTHCODE###&rU=###USER_uid###
- Nun wird anhand dem Parameter „rid“ der Benutzer ermittelt, an den der Newsletter geschickt wurde. In unserem Beispiel hat der Parameter den Wert „t_2„, also hat unser Benutzer die ID 2 und liegt in Tabelle „tt_address„. Alternativ könnte der Wert auch „f_2“ lauten, dann ist der Benutzer in Tabelle „fe_users“ gespeichert.
- Nun werden die Platzhalter in der URL mit den Daten des Benutzers ersetzt, Ergebnis ist z. B. eine solche URL: www.domain.de/index.php?id=3&cmd=delete&aC=7a7f6b54&rU=2
- Der Parameter „aC“ ist ein Authentifizierungscode, dieser wird von direct_mail weitergereicht, zuvor wurde er aber schon vom TYPO3 System auf die Gültigkeit überprüft.
Nun weiß ich auch, wieso die Platzhalter nicht ersetzt wurden: Der Benutzer war in der Datenbank als gelöscht markiert, er hat sich also bereits vom Newsletter abgemeldet.