Die Xobor-Foren verlangen für Passwörter min. 4 Zeichen, für Benutzernamen min. 3 Zeichen!
Etwas schwach!
Mit dem folgenden Plugin lässt sich die Passwortstärke bestimmen, ob Buchstaben, Zahlen oder Sonderzeichen zugelassen mit enthalten sein müssen!
Zusätzlich kann die Form des Benutzernamen bestimmt werden!
Benutzernamen oder Passwörter, wie 4711, 1234 oder qwertz, könnte man hier ausschließen.
Möglich sind dann Benutzernamen wie M. Müller-Schulze, Wolfgang (Admin) oder Mod & Admin
Selbst Leerzeichen und Umlaute kann man zulassen, die dann auch bei der Anmeldung oder beim Login sauber funktionieren!
Als Zusatz ist noch eine sofortige Validierung der Eingabe in Form eines grünen Hakens möglich! So kann der User bei der Anmeldung gleich erkennen, welche Form das Passwort haben muss und welche Zeichen beim Benutzernamen zugelassen sind!
Problemlos ist es, das PI nur bei der Anmeldung einzubauen!
Die Änderung der Passwortstärke und die Form des Benutzernamen lässt sich auf einfachste Weise mit nur einer Eingabenänderung in den jeweiligen Optionen realisieren und muss nicht mehrfach im ganzen Skript umgetragen werden!
Das Skript wird wegen der Variablen als PIugin in den "user_register_footer" kopiert!
Werden alle Variablen entfernt und bleiben nur die Zeilen für das gerade aktive Template stehen, funktioniert das Skript auch in der Fußzeile!
In Zeile 2+3 kann die minimale und maximale Anzahl der Zeichen für den Benutzernahmen bestimmt werden!
In Zeile 4 können durch eine 1 für ja Sonderzeichen zugelassen werden! Namen wie M. Müller-Meier-Schulze sind dann möglich!
In Zeile 6-11 kann die Passwortstärke eingestellt werden!
Die Zeilen 28-31 sind für die Validierung mit dem "grünen Haken" zuständig!
Die Validierungen für die Anmeldung sind mit Tooltipps ausgestattet!
<script> var BenutzerMinZeichen = 4 // Min. Anzahl der Zeichen für den Benutzernamen! var BenutzerMaxZeichen = 25 // Max. Anzahl der Zeichen für den Benutzernamen! var BenutzerSonder = 1 // 1=Ja 0=Nein - Umlaute und bestimmte Sonderzeichen im Benutzernamen, wie Ä, Ö, Ü, ü, ö, ä, &, :, (, ), ., - und Leerzeichen sind erlaubt!
var PasswortMin = 6 // Min. Anzahl der Zeichen für das Passwort! var PasswortMax = 20 // Max. Anzahl der Zeichen für das Passwort! var PasswortGroß = 0 // 1=Ja 0=Nein - Mindestens 1 Großbuchstabe ist im Passwort notwendig! var PasswortKlein = 0 // 1=Ja 0=Nein - Mindestens 1 Kleinbuchstabe ist im Passwort notwendig! var PasswortZahlen = 0 // 1=Ja 0=Nein - Mindestens 1 Zahl ist im Passwort notwendig! var PasswortSonder = 0 // 1=Ja 0=Nein - Mindestens 1 Sonderzeichen im Passwort!
/////////////// Ende der Eingabe ////////////////////
if (BenutzerSonder == 1) {benus = '[a-zA-Z0-9ÄÖÜüöä &:().-]';benuss = 'kann auch Sonderzeichen, wie ÄÖÜ&:().- und Leerzeichen';} else {benuss = 'darf keine Sonderzeichen';benus = "[a-zA-Z0-9]"}; if (PasswortGroß == 1) {passg = '(?=.*[A-Z])';passgg = ', min. 1 Großbuchstabe '}else{passg='';passgg=''}; if (PasswortKlein == 1) {passk = '(?=.*[a-z])';passkk = ', min. 1 Kleinbuchstabe '}else{passk='';passkk=''}; if (PasswortZahlen == 1) {passz = '(?=.*[0-9])';passzz = ', min. 1 Zahl '}else{passz='';passzz=''}; if (PasswortSonder == 1) {passo = '(?=.*[^a-zA-Z0-9])(?=.*[^])[^]';passoo = ', min. 1 Sonderzeichen';}else{passo='(?=.*[^])[^]';passoo='';passooo = '';};
$("input[name='namen']").attr({'pattern':''+benus+'{'+BenutzerMinZeichen+','+BenutzerMaxZeichen+'}','title':'Benutzername mit '+BenutzerMinZeichen+' bis '+BenutzerMaxZeichen+' Zeichen, '+benuss+' enthalten!','required':''}).after('<div></div>'); $("input[name='puw']").attr({'pattern':''+passz+''+passk+''+passg+''+passo+'{'+PasswortMin+','+PasswortMax+'}','title':'Passwort mit '+PasswortMin+' bis '+PasswortMax+' Zeichen'+passzz+''+passgg+''+passkk+''+passoo+'','required':''}).after('<div></div>'); $("input[name='mail']").attr({'pattern':'[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$','title':'Email-Adresse mit min. 2 Zeichen, einem @ und einer Domain','required':''}).after('<div></div>'); </script>
<style> input:required+div::before {content: url(https://files.homepagemodules.de/b2001010/a_775_50353579.png);position:absolute;cursor:pointer;margin-top:3px;} input:required+div:hover::after {content: attr(title) "Bitte füllen Sie die Zeile aus!"; background:#555555;color: #eeeeee;border: 1px solid #aaaaaa;border-radius: 4px;z-index:999999999;position:absolute;padding: 1px 1em;} input:required:valid+div::before {content: url(https://files.homepagemodules.de/b2001010/a_787_d5576045.png);} input:required:valid+div:hover::after {content: attr(title) "Die minimalen Eingabeanforderungen sind erfüllt!";background: #005000;} </style>
<!-- Business Template (v4)- Anfang --> {{template==144.start}} <style> input:required+div::before {margin-top:-20px;right:-40px;} input:required+div:hover::after {margin-top:-50px;right:-15px;} </style>
if(password.length < PasswortMin && password.length > 0) { error++; writeError('Das Passwort muss min. '+PasswortMin+' und max. '+PasswortMax+' Zeichen'+passzz+''+passgg+''+passkk+''+passoo+' aufweisen!');}; if(!validateMail(mail) && mail.length > 0) {error++; writeError('Die Email-Adresse muss mindestens 2 Zeichen aufweisen, ein @-Zeichen und die Domain enthalten, z.B. ".de"');};}); }); </script> {{template==144.end}} <!-- Business Template (v4) - Ende -->
<script> $(function(){ $("#mail").blur(function(){if(!ValideEmail(n)){$('#mail_err').html('<small><strong>Das ist keine gültige E-Mail Adresse!</strong></small>');}}); $("#puw").blur(function(){if(n.length < PasswortMin){$('#pw_err').html('<small><strong>Das Passwort muss mindestens '+PasswortMin+' Zeichen betragen!</strong></small>');}}); $("#namen").blur(function(){if(n.length < BenutzerMinZeichen){$('#namen_err').html('<small><strong>Der Benutzername muss mindestens '+BenutzerMinZeichen+' Zeichen betragen!</strong></small>');}}); }); $('.registration small:first').html('Bitte geben Sie Ihren gewünschten Benutzernamen ein, dieser '+benuss+' enthalten und sollte sich für Sie leicht einzuprägen sein.'); </script> {{template==111.end}} <!-- Gaja Template (v3) - Ende -->
<!-- Pro Silver (v2) - Anfang --> {{template==110.start}} <style> input:required+div::before {margin:-10px 0 0 10px;} input:required+div:hover::after {margin-top:-40px; right:100px;} .fields2 div{display:inline-block !important} </style>{{template==110.end}} <!-- Pro Silver (v2) - Ende -->
<!-- Standard Template (v1) - Anfang--> {{template==1.start}} <style> input:required+div::before {margin:-10px 0 0 10px;} input:required+div:hover::after {margin-top: -40px;margin-left:-100px;} td.nnor div{display:inline-block !important} </style> {{template==1.end}} <!-- Standard Template (v1) - Ende -->
<!-- Passwort / Für responsive Design und mobiles Templates --> <script> var BenutzerMinZeichen = 4 // Min. Anzahl der Zeichen für den Benutzernamen! var BenutzerMaxZeichen = 25 // Max. Anzahl der Zeichen für den Benutzernamen! var BenutzerSonder = 1 // 1=Ja 0=Nein - Umlaute und bestimmte Sonderzeichen, wie Ä, Ö, Ü, ü, ö, ä, &, :, (, ), ., - und Leerzeichen sind erlaubt
var PasswortMin = 6 // Min. Anzahl der Zeichen für das Passwort! var PasswortMax = 20 // Max. Anzahl der Zeichen für das Passwort! var PasswortGroß = 0 // 1=Ja 0=Nein - Mindestens 1 Großbuchstabe ist im Passwort notwendig! var PasswortKlein = 0 // 1=Ja 0=Nein - Mindestens 1 Kleinbuchstabe ist im Passwort notwendig! var PasswortZahlen = 0 // 1=Ja 0=Nein - Mindestens 1 Zahl ist im Passwort notwendig! var PasswortSonder = 0 // 1=Ja 0=Nein - Mindestens 1 Sonderzeichen!
/////////////// Ende der Eingabe ////////////////////
if (BenutzerSonder == 1) {benus = '[a-zA-Z0-9ÄÖÜüöä &:().-]';benuss = 'kann auch Sonderzeichen, wie ÄÖÜ&:().- und Leerzeichen';} else {benuss = 'darf keine Sonderzeichen';benus = "[a-zA-Z0-9]"}; if (PasswortGroß == 1) {passg = '(?=.*[A-Z])';passgg = ', min. 1 Großbuchstabe '}else{passg='';passgg=''}; if (PasswortKlein == 1) {passk = '(?=.*[a-z])';passkk = ', min. 1 Kleinbuchstabe '}else{passk='';passkk=''}; if (PasswortZahlen == 1) {passz = '(?=.*[0-9])';passzz = ', min. 1 Zahl '}else{passz='';passzz=''}; if (PasswortSonder == 1) {passo = '(?=.*[^a-zA-Z0-9])(?=.*[^])[^]';passoo = ', min. 1 Sonderzeichen';}else{passo='(?=.*[^])[^]';passoo='';passooo = '';};
$("input[name='namen']").attr({'pattern':''+benus+'{'+BenutzerMinZeichen+','+BenutzerMaxZeichen+'}','title':'Benutzername mit '+BenutzerMinZeichen+' bis '+BenutzerMaxZeichen+' Zeichen, '+benuss+' enthalten!','required':''}).after('<span></span>'); $("input[name='puw']").attr({'pattern':''+passz+''+passk+''+passg+''+passo+'{'+PasswortMin+','+PasswortMax+'}','title':'Passwort mit '+PasswortMin+' bis '+PasswortMax+' Zeichen'+passzz+''+passgg+''+passkk+''+passoo+'','required':''}).after('<span></span>'); $("input[name='mail']").attr({'pattern':'[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$','title':'Email-Adresse mit min. 2 Zeichen, einem @ und einer Domain','required':''}).after('<span></span>'); </script>
Um die Möglichkeit von Passwörtern und den Benutzernamen mit pattern zu bestimmen oder auch einzuschränken, folgen Möglichkeiten, die sinnvoll eingesetzt werden können!
Ein HTML-Formular mit einem Eingabefeld, das min. 4 Buchstaben, keine Zahlen oder Sonderzeichen enthalten darf:
1 2 3
<form> <input type="password" pattern="[A-Za-z]{4}" title="Eingabe mit min. 4 Buchstaben (groß oder klein), keine Zahlen oder Sonderzeichen!" required> </form>
Ein HTML-Formular mit einem Eingabefeld, das min. 4 Zeichen, min. 1 Zahl, min. 1 kleinen und min. 1 großen Buchstaben, aber kein Sonderzeichen enthalten darf:
1 2 3
<form> <input type="password" pattern="(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{4,}" title="Eingabe mit min. 4 Buchstaben, mit min. 1 Zahl, min. 1 kleiner Buchstabe, min. 1 großer Buchstabe und kein Sonderzeichen!" required> </form>
Ein HTML-Formular mit einem Eingabefeld, das min. 4 und max. 20 Zeichen, große oder kleine Buchstaben, Zahlen oder bestimmte Sonderzeichen (!?@#$%&*) enthalten darf:
1 2 3
<form> <input type="password" pattern="[a-zA-Z0-9!?@#$%^&*]{4,20}" title="Eingabe mit min. 4 und max. 20 Zeichen, mit großen oder kleinen Buchstaben, mit Zahlen oder bestimmte Sonderzeichen (!?@#$%&*)!" required> </form>
PS: Es währe natürlich gut, wenn Xobor das PI in die unterschiedlichen Templates fest übernehmen würde, dann gäbe es keine Anpassungsschwierigkeiten oder Fehlfunktionen!