注意:未初始化的字符串偏移量:62 in /../libraries/functions.php在第 316 行


Notice: Uninitialized string offset: 62 in /.../libraries/functions.php on line 316

伙计哦,伙计,我无法弄清楚...请帮忙。这里缺少什么?

以下是错误:

Notice: Uninitialized string offset: 62 in /..../libraries/functions.php on line 316
Notice: Undefined variable: stilldo in /..../libraries/functions.php on line 322

这是代码:

function generate_password($length = 12, $letters = true, $mixed_case = true, $numbers = true, $punctuation = false){
    ## Generate the alfa
    $alfa = '';
    if($letters == true)    $alfa .= 'abcdefghijklmnopqrstuvwxyz';
    if($mixed_case == true) $alfa .= strtoupper('abcdefghijklmnopqrstuvwxyz');
    if($numbers == true)    $alfa .= '0123456789';
    if($punctuation == true)$alfa .= '~!@#$%^&*(),.=+<>';
    ## Set Random Seed
    if(!function_exists('_generate_password_seed')):
    function _generate_password_seed(){
        list($usec, $sec) = explode(' ', microtime());
        return (float) $sec + ((float) $usec * 100000);
    }
    endif;
    srand(_generate_password_seed());
    ## Generate the password
    $token = "";
    for($i = 0; $i < $length; $i ++) {
        $token .= $alfa[@rand(0, @strlen($alfa))];
    }
    ## Check the length
    if(strlen($token) < $length){
        // echo $stilldo = $length - strlen($token);
        $token .= generate_password($stilldo);
    }
    ## Return the password
    return $token;
}

我在运行此功能的 5 次中有 10 次收到此错误,但我似乎无法破解它。

Notice: Undefined variable: stilldo的意思是,变量$stilldo没有定义,也没有初始化......这意味着,当递归函数时,您在递归中调用函数generate_password,该变量实际上具有空值。因此,您的函数无法正常工作。

代码部分应如下所示:

## Check the length
if(strlen($token) < $length){
    $stilldo = $length - strlen($token);
    $token .= generate_password($stilldo);
}

是的,一个愚蠢的错误 - 您注释掉了正确的行(只有echo应该注释掉或删除)。

享受!