2013-05-22 54 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! :) –