0

有人可以帮我解决我的这个错误吗?我在我的 oscommerce 网站上使用 sagepay 模块,但出现此错误:警告:第 406 行的 sage_pay_form.php 中除以零。这是代码。

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)]));
4

1 回答 1

0

如果那个百分号是取模运算符,那么答案很明显:strlen($key)必须为零。

万一您不知道,模数是表示“如果 z = x % y,则 z 等于将 x 除以 y 时剩下的余数”的运算符。所以

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

有一个分裂正在进行。

所以如果你$key是一个空字符串,它的长度为零。如果它的长度为零,您将除以零以获得模数。看到问题了吗?您假设字符串永远不能为空,但您的代码发现了它的情况。检查你的假设。

于 2013-05-22T09:09:48.237 回答