2013-05-08 2 views
0

Я сначала проверяю, возвращает ли функция действительный результат, а затем, если результат действителен, мне нужно использовать это в моем скрипте. Но вместо того, чтобы проверять один раз, а затем снова возвращаться к функции для своего результата, есть ли способ сделать все это за один раз? Здесь $strVal - это переменная, которую мне нужно использовать в querystring позже.Вместо вызова одной и той же функции дважды

$conn = connect(); 

encrypt('HIs#$%.-','x'); 
decrypt('6507A27EB0521AFA0776F1A4F8033041','x'); 

//If the function returns a valid result, 
if (encrypt('Tom','x')) 
{ 
echo 'Success'.$strVal;//I'll use this in a querystring later. 

} 
else 
{ 
echo 'An error occurred'; 
} 

//Encrypt string 
function encrypt($strToEncrypt,$salt) 
{ 
    global $conn; 
    $elements = $conn->prepare("select hex(aes_encrypt(:what,:salt)) as encValue"); 
    $elements->bindParam(':what', $strToEncrypt); 
    $elements->bindParam(':salt', $salt); 
    $elements->execute(); 
    $row = $elements->fetch(); 
    $strVal = $row['encValue']; 
    if(is_null($strVal)){return false;}else{return $strVal;} 
} 

//Decrypt string 
function decrypt($strToDecrypt,$salt) 
{ 
    global $conn; 
    $elements = $conn->prepare("select aes_decrypt(unhex(:what),:salt) as decValue"); 
    $elements->bindParam(':what', $strToDecrypt); 
    $elements->bindParam(':salt', $salt); 
    $elements->execute(); 
    $row = $elements->fetch(); 

    if(is_null($row['decValue'])) 
    {echo "Null";}else{echo $row['decValue'];} 
} 
+0

«функция возвращает правильный результат» и «если результат действительно» Я не понимаю вашу логику .. – Svetoslav

ответ

2

Да, вы могли бы сделать назначение переменной внутри условия:

/* single 'equal' operator intended */ 
if($strVal = encrypt('Tom', 'x')) 
{ 
    echo 'Success' . $strVal; 
} 
+0

Это невозможно сделать таким образом. Мне нужно $ strVal, поэтому я могу использовать его в нескольких сценариях. – Norman

+0

@Norman Подождите, что? Я не понимаю ваш комментарий, но мне кажется, что это не вопрос сверху, а продолжение. Если вам нужна переменная в разных местах вашего скрипта, используйте глобальную переменную или какой-то реестр. – feeela

+0

@Norman есть другой способ для OP: 'if ($ buffer = encrypt ('Tom', 'x')) {$ strVal. = $ Buffer; echo 'Success', $ strVal; } ', все еще подходит для ответа ** feeela **. – BlitZ

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