2013-05-22 40 views
0

有人能帮我解决这个错误吗?我在我的oscommerce网站上使用sagepay模块,我得到了这个错误:警告:在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! :) –