2013-05-22 5 views
0

누가이 오류로 나를 도울 수 있습니까? 내 oscommerce 웹 사이트에서 sagepay 모듈을 사용하고 있는데 다음 오류가 있습니다. 경고 : sage_pay_form.php에서 0으로 나누십시오 (라인 406). 여기 코드가 있습니다.경고 : oscommerce에서 0으로 나누기

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) 제로이어야합니다.

modulus는 "z = x % y이면 z를 x로 나눌 때 남은 나머지와 같습니다."라는 연산자입니다. 따라서

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

계속 진행되고 있습니다.

따라서 $key이 빈 문자열이면 길이가 0입니다. 길이가 0이면 modulus를 얻기 위해 0으로 나눕니다. 문제를 보시겠습니까? 문자열은 결코 비어있을 수 없다고 가정하고 있지만 코드가있는 경우를 찾았습니다. 가정을 확인하십시오.

+0

나는 그것을 얻지 않는다. pls 정교한 수 있습니까? 감사. –

+0

감사합니다. :) –