PHP function not returning value

前端 未结 2 1566
栀梦
栀梦 2021-01-29 15:06

For some reason I can not get my function to return a string...

$password = crypt_password_input($password, \"\");

//Encrypt Password longer than 8 characters
f         


        
相关标签:
2条回答
  • 2021-01-29 15:35

    you have no return statement under this condition block. i have added return there.

    if($passwordLength > 8)
    {
        $encryptString = substr($inputPassword, 0, 8);
        $inputPassword = substr($inputPassword, 8);
        $newPassword .= crypt($encryptString, "HIDDENSALT");
        return crypt_password_input($inputPassword, $newPassword);
    }
    
    0 讨论(0)
  • 2021-01-29 15:49

    I am not sure about your logic, but your code should be like this:

    $password = crypt_password_input($password, "");
    
    //Encrypt Password longer than 8 characters
    function crypt_password_input($inputPassword, $newPassword)
    {
        $passwordLength = strlen($inputPassword);
    
        if($passwordLength > 8)
        {
            $encryptString = substr($inputPassword, 0, 8);
            $inputPassword = substr($inputPassword, 8);
            $newPassword .= crypt($encryptString, "HIDDENSALT");
            return crypt_password_input($inputPassword, $newPassword);
        }
        else
        {
            $newPassword .= crypt($inputPassword, "HIDDENSALT");
            echo "Final: " . $newPassword . "<br/>";
            return $newPassword;
        }
    }
    
    
    echo "Encrypted from the input: " . $password . "<br/>";
    

    In your code, you are recursively calling the input but not returning anything, so it fails if you have password longer than 8 characters.

    0 讨论(0)
提交回复
热议问题