Anmeldung klappt nicht (German / Deutsch)

by Mathias @, Thursday, May 30, 2019, 16:38 (173 days ago)

Hallo liebes Forum ;-)

nach Umstieg auf die neuste Version 2.4.20 klappt die Anmeldung neuer Benutzer nicht mehr. Felhlermeldung:

E-Mail-Adresse ungültig

Woran kann das liegen?

Viele Grüße und Danke um Voraus,
Mathias

Anmeldung klappt nicht

by Mathias @, Thursday, May 30, 2019, 17:03 (173 days ago) @ Mathias
edited by Mathias, Thursday, May 30, 2019, 17:11

Habe mal einen Versionsvergleich gemacht. Die Prüffunktion steckt in der functions.inc.php

Aktuelle Version 2.4.20 , Zeile 393

if (!preg_match("/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,}|[0-9]{1,3})(\]?)$/", $email))
 

Alte Version 2.3.5, Zeile 422

  if(!preg_match("/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/", $email))

Die Änderung steckt hier: ... [a-zA-Z]{2,4} ...
Ist das eventuell ein Schreibfehler? Aber auch nach Änderung klappt die Registrierung nicht.

Gruß, Mathias

LÖSUNG: Anmeldung klappt nicht

by Mathias, Thursday, May 30, 2019, 17:37 (173 days ago) @ Mathias
edited by Mathias, Thursday, May 30, 2019, 17:53

Habe nun einen anderen Ansatz (und gleich einen Verbesserungsvorschlag ;-) ):
functions.inc.php, Zeile 393 ändern in:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

Das hat bei mir funktioniert. Das Forum läuft unter der neusten PHP-Version 7.3, vielleicht war das das Problem.

Gruß und vielen Dank für dieses großartige Forums-Script!

Mathias :-)

PS: Pull-request ist raus

Avatar

Anmeldung klappt nicht

by Auge ⌂ @, Saturday, June 01, 2019, 17:18 (171 days ago) @ Mathias

Hallo

Aktuelle Version 2.4.20 , Zeile 393

if (!preg_match("/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,}|[0-9]{1,3})(\]?)$/", $email))
 

Alte Version 2.3.5, Zeile 422

  if(!preg_match("/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/", $email))

Die Änderung steckt hier: ... [a-zA-Z]{2,4} ...
Ist das eventuell ein Schreibfehler?

Der Dokumentation wegen:

Der Abschnitt [a-zA-Z]{2,4} des alten Codes prüfte die Top Level Domain (TLD, beispielsweise .de, .com, .net) der E-Mail-Adressen und beschränkte ihre Länge auf zwei bis vier Zeichen. Es gibt aber auch längere TLDs, wie zum Beispiel .museum (Länge 6). E-Mail-Adressen einer Domain mit der TLD .museum wurden mit dem alten Code als ungültig erkannt, weil die TLD halt länger als vier Zeichen ist.

Dem trägt [a-zA-Z]{2,} neuerer Versionen Rechnung, weil hier nur eine Mindestlänge von zwei Zeichen aber keine Maximallänge festgelegt wird. Es handelt sich also nicht um einen Schreibfehler und der Code funktioniert seit Version 2.4.4 (Release am 3. Oktober 2017, siehe Abschnitt Fixes der soeben verlinkten Release-Seite) und wenn er grundsätzlich kaputt wäre, wäre uns das bestimmt schon gemeldet worden.

Du hast für dich die Lösung mit der Funktion filter_var gefunden. Du hast sie als PR eingebracht und Micha hat sie in den Code übernommen. Ich habe damit grundsätzlich kein Problem, kann mir aber vorstellen, dass uns diese Änderung auf die Füße fallen könnte. Der zur Prüfung einer E-Mail-Adresse genutzte Filter prüft die Adresse gegen die Regeln des RFC822 von 1982. Nicht nur, dass dabei Spezialfälle als invalid erkannt werden (Micha hat den Abschnitt der PHP-Doku im PR verlinkt), es werden auch keine Adressen von IDN-Domains (a.k.a. Umlautdomains) erkannt (siehe diese user contributed note). Das ist auch der Grund, warum wir bis jetzt beim regulären Ausdruck geblieben sind.

Mich würde daher interessieren, welche E-Mail-Adresse vom Skript zurückgewiesen wurde, auch wenn mich die Adresse ja datenschutztechnisch nichts angeht. Das ist also als rhetorische Anfrage zu sehen.

Tschö, Auge.

--
Trenne niemals Müll, denn er hat nur eine Silbe!

RSS Feed of thread
powered by my little forum