2013-08-05 91 views
-3

出於某種原因,我不能讓我的函數返回一個字符串...PHP函數沒有返回值

$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"); 
     crypt_password_input($inputPassword, $newPassword); 
    }else{ 
     $newPassword .= crypt($inputPassword, "HIDDENSALT"); 
     echo "Final: " . $newPassword . "<br/>"; 
     return $newPassword; 
    } 
} 


echo "Encrypted from the input: " . $password . "<br/>"; 

這是這個腳本的輸出...

決賽:ltu1GUwy71wHkltVbYX1aNLfLYltEZ7Ww8GghfM
從輸入加密:

+0

acutally你返回的字符串是'ltu1GUwy71wHkltVbYX1aNLfLYltEZ7Ww8GghfM' – Robert

回答

3

您在此條件下沒有return語句塊。我在那裏增加了回報。

if($passwordLength > 8) 
{ 
    $encryptString = substr($inputPassword, 0, 8); 
    $inputPassword = substr($inputPassword, 8); 
    $newPassword .= crypt($encryptString, "HIDDENSALT"); 
    return crypt_password_input($inputPassword, $newPassword); 
} 
0

我不知道你的邏輯,但你的代碼應該是這樣的:

$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/>"; 

在代碼中,你是遞歸調用的輸入,但不返回任何東西,所以它失敗,如果你有超過8個字符的密碼。

+0

他不希望它返回,直到密碼長度達到8個或更多字符。 – Jared

+0

是的,我確實有$ password = crypt_password_input($ password,「」);出於某種原因,我沒有寫在這裏哈哈。我確實看到我需要真實情況下的回報。謝謝你們:D –