Почему разная длина пароля?

140
01 декабря 2019, 03:00

Формирую пароль:

function createPassword ( $password_size ) {
    $nabor = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()+<>?/\{}[]~";
    $size_str = strlen( $nabor );
    $password = '';
    for ( $i = 0; $i < $password_size; $i++ ) {
        $password .= $nabor[rand( 0, $size_str )];
    }
    return $password;
}

Прогоняю:

$p = '';
for ($i=10; $i>0; $i--) {
    $p = createPassword(10);
    echo "$p--" . strlen($p) . "<br>";
}

Вывод:

9+A77(!sPC--10
cIn+2L42o)--10
!iYVIjT(aVn5?28+9--9
Eu**2#Xh--10
))2L(]{i2--10
Tj#?vodx@--10
LzZ2gTD?wb--10
UQD
yB{bdVm]to@x@--10
+F^lzEgw/u--10

UPD Как сделать набор с спец символами?

сделал такой набор (работает верно):

$nabor = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

почему пароли разной длины?

поделиться|улучшить этот вопрос
Answer 1
function createPassword ( $password_size ) 
{    
    $nabor = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()+<>?/\{}[]~";
    $size_str = strlen( $nabor );
    $password = '';
    for ( $i = 0; $i < $password_size; $i++ ) {
        $password .= $nabor[rand( 0, $size_str - 1 )];
    }
    return $password;
}

Нумерация массивов начинается с нуля. Диапазон rand от нуля до размера строки, в случае когда он выдает число равное размеру строки - идет обращение к массиву $nabor с несуществующем индексом

в дополнение к ответу: При просмотре результата генерации в браузере следует учитывать, что набор символов включает < и >, поэтому когда такие символы включались в генерируемую строку, браузер распознавал в них неизвестный тэг и скрывал все, что между ними находилось

READ ALSO
Как передать сумму из калькулятора в письмо формы?

Как передать сумму из калькулятора в письмо формы?

Есть форма с инпутамиЭто калькулятор

142
PHP Разместить изображения на A4

PHP Разместить изображения на A4

Есть изображения одного размера вpng Как можно по средствам PHP реализовать размещение этих изображений на нескольких A4?

97
Как разместить гео объекты на карте?

Как разместить гео объекты на карте?

Есть гео данные вcsv файле и надо их расположить на точках карты (лучше openstreet) и потом , чтоб люди , введя нужную точку могли ее найти

101
Обрезать строку от и до определенного символа, PHP

Обрезать строку от и до определенного символа, PHP

Есть строка типа $str = +124+567+68+8362; Нужно получить все эти числа от + и до + в массив:

114