Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
php:otpauth_formular [2024/11/18 11:12] webproducer angelegt |
php:otpauth_formular [2025/03/26 14:16] (aktuell) webproducer Beispiel für 6 einzelne Zahlenfelder |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== HTML-Login-Formular mit "Benutzername", "Passwort" und "Token" ====== | ====== HTML-Login-Formular mit "Benutzername", "Passwort" und "Token" ====== | ||
+ | |||
+ | Hier ein Beispiel für 6 einzelne Eingabefelder, welche ausschließlich Zahlenwerte erlauben: | ||
+ | |||
+ | === HTML === | ||
<code php> | <code php> | ||
Zeile 5: | Zeile 9: | ||
<input id="user-text-field" type="email" autocomplete="username"/> | <input id="user-text-field" type="email" autocomplete="username"/> | ||
<input id="password-text-field" type="password" autocomplete="current-password"/> | <input id="password-text-field" type="password" autocomplete="current-password"/> | ||
- | <input id="single-factor-code-text-field" autocomplete="one-time-code"/> | + | <div class="col-two-third" id="mfa_container"> |
+ | <input type="text" id="token_1" name="token[1]" maxlength="1" autocomplete="one-time-code" /> | ||
+ | <input type="text" id="token_2" name="token[2]" maxlength="1" autocomplete="one-time-code" /> | ||
+ | <input type="text" id="token_3" name="token[3]" maxlength="1" autocomplete="one-time-code" /> | ||
+ | <input type="text" id="token_4" name="token[4]" maxlength="1" autocomplete="one-time-code" /> | ||
+ | <input type="text" id="token_5" name="token[5]" maxlength="1" autocomplete="one-time-code" /> | ||
+ | <input type="text" id="token_6" name="token[6]" maxlength="1" autocomplete="one-time-code" /> | ||
+ | </div> | ||
</form> | </form> | ||
</code> | </code> | ||
Hinweis: Das Attribut "autocomplete" ist hierbei wichtig, damit der Token oder bei Apple auch Bestätigungscode genannt, automatisch in das Token-Feld übernommen werden kann. | Hinweis: Das Attribut "autocomplete" ist hierbei wichtig, damit der Token oder bei Apple auch Bestätigungscode genannt, automatisch in das Token-Feld übernommen werden kann. | ||
+ | |||
+ | === JavaScript / jQuery === | ||
+ | |||
+ | <code javascript> | ||
+ | <script lang="js"> | ||
+ | $( "#mfa_container input" ).keyup( function( e ) { | ||
+ | if( e.which < 96 || e.which > 105 ) { // nur 0-9 erlauben | ||
+ | this.value = ''; | ||
+ | } else if( this.value.length == this.maxLength ) { | ||
+ | $( this ).next('input').focus(); // zum naechsten Feld springen | ||
+ | } | ||
+ | }); | ||
+ | </script> | ||
+ | </code> | ||
+ | |||
+ | === CSS === | ||
+ | <code css> | ||
+ | #mfa_container { | ||
+ | display: flex; | ||
+ | flex-direction: row; | ||
+ | height: 64px; | ||
+ | } | ||
+ | |||
+ | #mfa_container input { | ||
+ | text-align: center; | ||
+ | margin-left: 10px; | ||
+ | border-width: 2px; | ||
+ | font-size: 20px; | ||
+ | } | ||
+ | </code> |