Как отобразить ошибку в div, если пароль слишком короткий или слишком длинный, используя JavaScript или PHP

0

Как вы видите ошибку в зависимости от длины текста, введенного в поле пароля. Например, если пользователь вводил 18 символов, но предел был равен 16, JavaScript или PHP отображали бы "Limit is 16 characters" в div. Вот мой код:

<!doctype html>
<html>
<head>
<title>Project</title>
<script type="text/javascript">

</script>
</head>
<body>
<div class="container">
    <span class="main_text">Textbox</span><br>
    <input name="textbox1" type="password" id="textbox1" placeholder="Password"><br>
    // Display error here
</div>
</body>
</html>

Любая помощь будет оценена. Спасибо, Омар.

Ps, Вот пример того, что я имею в виду: Изображение 174551

  • 2
    Вы сами что-нибудь пробовали?
  • 2
    несмотря на то, что это не то, что вы хотите, вы можете добавить свойство maxlength в свой input тег. <input name="textbox1" type="password" id="textbox1" placeholder="password" maxlength="16" /> ;
Показать ещё 2 комментария
Теги:

5 ответов

0

есть пути на стороне сервера и пути на стороне клиента. Первая проверка будет на стороне клиента. Я делаю это так:

<div class="container">
    <span class="main_text">Textbox</span><br>
    <input name="textbox1" type="password" id="textbox1" placeholder="Password" 
           onKeyup='checkLength()'>
    <br>
    // Display error here
    <span id="errorSpan"></span>
</div>
</body>
</html>
<script type="text/javascript">
    function checkLength(){
        var tb = document.getElementById('textbox1');
        var limit = 16;  // set this?
        if(tb.length > limit){
            document.getElementById('errorSpan').innerHtml ='This field is limited to '+ limit +' characters';
            // leave only the first 'limit' chars in the field...
            tb.innerHtml = tb.innerHtml.substr(0,limit);
        }else{
            document.getElementById('errorSpan').innerHtml = '';
        }
    }
</script>

вы можете сделать его несколько более многоразовым, например:

<div class="container">
    <span class="main_text">Textbox</span><br>
    <input name="textbox1" type="password" id="textbox1" placeholder="Password" 
           onKeyup='checkLength(this,16,'errorSpan')'>
    <br>
    // Display error here
    <span id="errorSpan"></span>
</div>
</body>
</html>
<script type="text/javascript">
    function checkLength(field, limit, showWhere){
        var tb = field;
        if(tb.length > limit){
            document.getElementById(showWhere).innerHtml ='This field is limited to '+ limit +' characters';
            // leave only the first 'limit' chars in the field...
            tb.innerHtml = tb.innerHtml.substr(0,limit);
        }else{
            document.getElementById(showWhere).innerHtml = '';
        }
    }
</script>

надеюсь, этого достаточно, чтобы вы начали. Вы также должны сделать проверку на стороне сервера, потому что люди могут легко обойти javascript.

0

add onchange='checkPasswordLength(this.value)' в тег открытия input.

Затем, после ввода, добавьте:

<span id="errorSpan" style="color:red;"></span>
<script>
    function checkPasswordLength(password){
         if (password.length > 16) {
             document.getElementById("errorSpan").innerHTML = "Limit is 16 characters";
         }
         else {
             document.getElementById("errorSpan").innerHTML = "";
         } 
    }
</script>
  • 0
    Большое спасибо!
  • 0
    Просто чтобы прояснить ситуацию, злоумышленник может обойти любой интерфейсный JavaScript-код, применяющий правила к паролю, просто отключив JavaScript в своем браузере. Правила внешнего интерфейса хороши, но убедитесь, что они также реплицированы на внутреннем.
0
var textbox1 = document.getElementById('textbox1');
function checkLength() {
    var length = textbox1.length;
    if (length > 16) {textbox1.insertAdjacentHTML('afterend', 'You are limited to 16 characters');}
}
textbox1.addEventListener('change', checkLength, false);

Хотя вы также можете использовать метод .innerHTML, .insertAdjacentHTML дает вам контроль над тем, где вы хотите вставить строку. Он также обеспечивает значительное повышение производительности. https://hacks.mozilla.org/2011/11/insertadjacenthtml-enables-faster-html-snippet-injection/

EDIT: вы также можете прослушивать любое из ключевых событий. т.е. нажатия клавиш, нажатия клавиш, нажатия клавиш. Кроме того, я должен указать, что вы не должны полагаться на JavaScript для таких вещей. JavaScript может быть отключен. Что-то реализовано на стороне сервера.

-2

вы можете использовать strlen() в php. функции strlen() подсчитывают количество символов, которые находятся в строке.

<?php
if(strlen($password) < 6) {
    echo 'ERROR: password is too short';
} 
else {
    echo 'Congratulations! Your password is secured';
}
?>
-2

Проверьте этот код, например - http://codepen.io/shhade/pen/nBmJy

  • 0
    Спасибо, но есть ли способ отобразить текст, когда пользователь печатает?
  • 0
    Просто замените событие focusout на событие нажатия клавиши, посмотрите мои изменения в ссылке
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню