Avatar

Anmeldung klappt nicht (German / Deutsch)

by Auge ⌂, Saturday, June 01, 2019, 17:18 (1789 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!


Complete thread:

 RSS Feed of thread