2013-08-05 6 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, ""); по какой-то причине я не писал это здесь LOL. Я вижу, что мне нужно возвращение в истинное состояние. Спасибо, ребята: D –

Смежные вопросы