2013-05-22 2 views
0

Может ли кто-нибудь помочь мне с этой моей ошибкой? Я использую модуль sagepay на моем веб-сайте oscommerce, и я получил эту ошибку: Warning: Division by zero в sage_pay_form.php в строке 406. Вот код.Предупреждение: Деление на ноль в oscommerce

function simpleXor($InString, $Key) { 

    $KeyList = array(); 
    $output = ""; 

    for ($i=0; $i<strlen($Key); $i++) { 
     $KeyList[$i] = ord(substr($Key, $i, 1)); 
    } 

    for ($i=0; $i<strlen($InString); $i++) { 
     $output .= chr(ord(substr($InString, $i, 1))^($KeyList[$i % strlen($Key)])); 
    } 

что не так с этим?

$output .= chr(ord(substr($InString, $i, 1))^($KeyList[$i % strlen($Key)])); 

ответ

0

Если знак процента является оператором модуля, то ответ очевиден: strlen($key) должен быть равен нулю.

На всякий случай, если вы не знаете, модуль является оператором, который говорит: «если z = x% y, то z равно остатку, оставшемуся при делении x на y». Таким образом,

z = x % y equals 1 if x = 5 and y = 2. 

Существует разделение.

Итак, если ваша $key - пустая строка, она будет иметь нулевую длину. Если он имеет нулевую длину, вы будете делить на ноль, чтобы получить модуль. См. Проблему? Вы предполагаете, что строка никогда не может быть пустой, но ваш код нашел случай, где он есть. Проверьте свои предположения.

+0

Я не понимаю. вы можете разработать? Благодарю. –

+0

спасибо duffymo! :) –

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