Webmaster общности: Predpriemach.com | SearchEngines.bg

    Проверка за сила на парола

    Безплатни AJAX уроци

    Автор: trevata

    Така… За този скрипт съм използвал библиотеката jQuery за AJAX ефектите. Повече информация за нея можете да намерите на официалния сайт http://jquery.com .
    Така ще започна със файла със функциите – passCheck :

    <?php
    @header("Content-Type: text/html; charset=windows-1251");
    function checkStrength($password)
    {
    if (strlen($password) == 0)
    {
    return false;
    }
    
    $passStrength = 0;
    
    $length = strlen($password); //Взимаме дължината на паролата
    
    // Проверяваме дали паролата не е само от малки букви
    if(strtolower($password) != $password)
    {
    $passStrength += 4;
    }
    
    //Проверяваме дали паролата не е само от главни букви
    if(strtoupper($password) == $password)
    {
    $passStrength += 4;
    }
    
    //Проверяваме дали паролата е м/у 8 и 15 символа
    if($length >= 8 && $length <= 15)
    {
    $passStrength += 3;
    }
    
    //Проверяваме дали паролата е м/у 16 и 35 символа
    if($length >= 16 && $length <=35)
    {
    $passStrength += 5;
    }
    
    //Проверяваме дали паролата е над 35 символа
    if($length > 35)
    {
    $passStrength += 6;
    }
    
    //Взимаме числата от паролата
    preg_match_all('/[0-9]/', $password, $numbers);
    $passStrength += sizeof($numbers[0]) * 2; // Умножаваме броя на числата по 2
    
    // Проверяваме за специални знаци
    preg_match_all('/[|!@#$%&*\/=?,;.:\-_+~^\\\]/', $password, $specialchars);
    $passStrength += sizeof($specialchars[0]) * 2; // Умножаваме броя на специалните символи по 2
    
    //Броим уникалните символи в паролата
    $chars = str_split($password);
    $num_unique_chars = sizeof( array_unique($chars) );
    $passStrength += $num_unique_chars * 3; //Умножаваме броя на уникални символи по 3
    
    $passStrength = $passStrength > 99 ? 99 : $passStrength; // Проверяваме дали $strength е по-голямо от 99
    $passStrength = floor($passStrength / 10 + 1); // Делим полученото число на 10 и събираме с 1
    
    switch ($passStrength){
    case 1: case 2: case 3:
    $strengthWords = "Слаба";
    break;
    case 4: case 5: case 6:
    $strengthWords = "Средна";
    break;
    case 7: case 8:
    $strengthWords = "Силна";
    break;
    case 9: case 10:
    $strengthWords = "Много силна";
    break;
    }
    
    return $strengthWords;
    }
    
    function genPass($minchars=5, $maxchars=7, $usesymbol=0)
    {
    $chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz"; //символите, които искате да се появяват във паролата.
    
    if ($usesymbol == 1){
    $chars .= "!@#$%^&*()_+";
    }
    
    $i=0;
    
    $repeat=mt_rand($minchars,$maxchars); //рандом стойност м/у двете избрани чрез параметрите зададени на функцията. По подразбиране м/у 5 и 7
    
    // Докато $i е по-малко от $repeat
    while ($i<$repeat)
    {
    $randompass.=$chars[mt_rand(1, strlen($chars)-1)]; //избираме си рандом символ от всички горепосочен
    $i+=1;
    }
    
    echo $randompass;
    }
    
    
    if ($_REQUEST['parola']){
    $password = $_REQUEST['parola'];
    echo checkStrength($password);
    }
    
    if ($_REQUEST['newparola']){
    echo genPass(10, 14, 1);
    }
    
    ?>

    Тук имаме 2 функции. Едната – checkStrength. Тя проверява силата на Вашата парола чрез прост алгоритъм. Отначало се задава една промелива $passStrength със стойност 0. Постепенно тази стойност се увеличава в зависимост от няколко неща: Съотношение между големи и малки букви, дължината на паролата, съдържанието на цифри във паролата, съдържанието на специални знаци във паролата (от сорта на !@#$ и т.н.) и уникалните символи в паролата. Накрая стойността на $passStrength се дели на 10 и се закръглява. Получава се число от 1 до 10, колкото по-високо е то, толкова по-силна е паролата. Има 1 параметър $password – Това е паролата зададена от потребителя.

    Втората функция е genPass. Тук имаме 3 параметъра.

    1. $minchars – минималните символи за генерираната парола. По подразбиране е 5.
    2. $maxchars – максималните символи за генерираната парола. По подразбиране е 7.
    3. $usesymbol – този параметър приема две стойности 0 и 1, като по подразбиране е 0. Когато стойността му е 0 във паролата ви няма да се появяват символите !@#$%^&*()_+, ако е 1 тези символи ще бъдат на разположение.

    На края на файла виждаме две проверки. Те проверяват дали има заявка от AJAX-а.

    Ще продължа със JS файла main.js :

    $(document).ready(function(){
    $("#pass").keyup(function(){
    $.ajax({
    type: "POST",
    url: "passCheck.php",
    data: ({
    parola: $("#pass").val()
    }),
    contentType: "application/x-www-form-urlencoded;charset=windows-1251",
    success:function(data) {
    $("#checkParola").text(data);
    }
    });
    });
    
    $("#newpass").click(function(){
    $.ajax({
    type: "POST",
    url: "passCheck.php",
    data: ({
    newparola: 1
    }),
    contentType: "application/x-www-form-urlencoded;charset=windows-1251",
    success:function(data) {
    $("#newParola").text(data);
    }
    });
    });
    });

    Нищо специално. Проверката за силата на паролата се изпраща при евент onKeyUp във елемента със id – pass. В случая този елемент е текстово поле. Евентът onKeyUp е моментът, когато пуснете копчето на клавиатурата. Праща една POST заявка със стойност parola. И показва отговора от сървъра във елемент със id – checkParola.

    Втората функция се изпълнява при натискането на елемент с id – newpass. Пак праща POST заявка, но със стоност newpass. Отговорът от сървъра се получава във елемент с id – newParola.

    И двете заявки се пращат във файла passCheck.php

    Ето как изглежда и индекса:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <title>Валидация на формуляр...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    <script src="main.js" type="text/javascript"></script>
    </head>
    
    <body>
    <form name="proveri" action="" method="post">
    Парола: <input type="text" name="parola" id="pass" />
    <div id="checkParola"></div><br />
    <input type="button" name="genNewPass" id="newpass" value="Генерирай парола" />
    <div id="newParola"></div>
    </form>
    </body>
    
    </html>

    Оставете коментар