내 PHP 무작위 비밀번호 생성기는 왜 \'a\'와 배열만 생성합니까?

Linda Hamilton
풀어 주다: 2024-11-26 13:59:12
원래의
937명이 탐색했습니다.

Why Does My PHP Random Password Generator Only Produce

PHP에서 비밀번호에 대한 무작위 문자열 생성

문제:

코드를 사용하여 PHP에서 무작위 비밀번호를 생성할 때 아래 스니펫에서 모든 문자는 'a'이고 반환 값은 a 대신 배열입니다. 문자열.

function randomPassword() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, count($alphabet)-1);
        $pass[$i] = $alphabet[$n];
    }
    return $pass;
}
로그인 후 복사

해결책:

1. 알파벳 길이를 계산하려면 count 대신 strlen을 사용하세요. count는 문자열에 대해 항상 1을 반환하는 반면 strlen은 실제 길이를 반환합니다.

$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
로그인 후 복사

2. implode를 사용하여 배열을 문자열로 변환합니다. implode는 배열을 가져와 해당 요소를 단일 문자열로 결합합니다.

return implode($pass); //turn the array into a string
로그인 후 복사

3. $pass를 배열로 선언합니다. 이렇게 하면 문자열로 초기화되지 않습니다.

$pass = array(); //remember to declare $pass as an array
로그인 후 복사

보안 경고:

rand()는 다음과 같습니다. 암호학적으로 안전한 의사 난수 생성기가 아닙니다. 비밀번호 생성이나 암호화 목적을 위해 보다 안전한 대안을 사용하는 것을 고려해보세요.

위 내용은 내 PHP 무작위 비밀번호 생성기는 왜 \'a\'와 배열만 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿