2009-12-04 7 views
1

문자열 입력을 받아야하는 amfPHP 함수를 작성하고 있습니다. 영숫자 문자는 문제없이 사용되지만, 유감스럽게도 "2.UgnFl4kAWovazp_tVo6fHg __. 86400.1260025200-571701419"를 매개 변수로 보내면 데이터가 "2"로 반환됩니다. 여기 amfPHP 함수 입력 문제

은 (당신이 볼 수있는 실제 간단한) 기능

function checkOpenSession($guid, $session_key) { 
     return $session_key; 
} 
+0

아주 간단 해 보입니다. 메소드를 호출하는 코드와 결과를 인쇄하는 코드를 보여주고 싶을 것입니다. –

답변

1

난 그냥 간단한 설치로이 시도하고 바로 서비스 브라우저에서 파일에 결과를 기록하고 괜찮을 것입니다 나를 위해. 그래서 문제는 부름에있는 것 같습니다.

또 다른 가능성은 선행 정수 때문에 amfphp가 반환 된 값의 데이터 유형을 문자열에서 int로 변경한다는 것입니다. 반환 문자열의 시작 부분에 영숫자 문자를 넣고 그 문자가 무엇인지보십시오.

+0

당신은 amfphp에 대해 옳았습니다. 문자열을 정수로 바꿉니다. 문자열의 시작 부분에 알파 숯을 넣었을 때, 추가 된 문자열로 올바른 값을 반환합니다. 이것을 피하기위한 해결책이나 설정을 알고 있습니까? (만약 어떤 해결책도 찾을 수 없다면 임시 해결 방안으로 char를 넣을 것입니다.) –

+0

나는 그 형식을 가진 문자열을 반향시키는 빠른 테스트를했고 PHP는 그것을 변환하지 않는 것 같습니다. 그러면 amfphp에서 설정을 찾아야합니다. 나는 거기에 있다고 생각하지 않는다. 또한 변환을 수행하는 AS 프런트 엔드 일 수도 있습니다. AS2 또는 AS3을 사용하고 있습니까? AS3은 유형 안전해야합니다. –

-1

문자열을 큰 따옴표로 묶으십시오. 문제가 해결 될 것입니다.

1

이 동작은 실제로 AMFPHP 서비스 브라우저 (버그)에 나타나므로 number 선도 문자열을 int로 변환하는 AMFPHP로 잘못 인식하기 쉽습니다. 그러나 문제는 보내는 코드에 있습니다. 예를 들어 제대로 JSON의 게이트웨이를 통해 urlencode되고 문자열을 작품 전송 (목적 C 코드) : passMD5이 선행 숫자를 가질 수있다

NSString *theUrl = [[NSString alloc] initWithFormat:@"%@/modules/amfphp/amfphp/json.php/MysqlRemoting.checkAuth/%@/%@/1", kServerBaseUrl, userName, passMD5]; 
NSString *encodedUrl = [theUrl stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding]; 

. 그러나 서비스 브라우저에서 checkAuth 메소드에 적절한 값을 입력하면 오류가 발생합니다. 당신이 인수에 문자열을 기대한다면

[편집]

$value = urldecode($value); 
if($value != "") { 
if($value[0] != '[' && $value[0] != '{' && $value != "null" && $value != "false" && $value != "true") { 
$hasAlpha = false; 
//check to see if it is a number 
$sl = strlen($value); 
for ($i = 0; $i < $sl; $i++) { 
    $char1 = ord($value[$i]); 
    if($char1 >= 0x30 && $char1 <= 0x39) { 
    //Then this is a number 
    } else { //Else leave value as is */ 
    $hasAlpha = true; 
    } 
    } 
    if (!$hasAlpha) $value = json_decode($value, true); 
} 
     else 
     { 
      $value = json_decode($value, true); 
     } 
    } 
+0

2 년 후 나는 위의 (전송 코드에있는) 코드를 새 머신으로 옮긴 사이트를 옮겼다. 문제는 amfphp에있다. (또는 php 5.3에서 json_decode와 5.2의 차이가있다.) 어쨌든 , amfphp/core/json/app/actions.php, 48 행에서 param을 디코딩하고 첫 번째 문자 만 검사하여 json_decode (즉, 숫자에서 따옴표를 제거해야하는지)를 확인합니다. 모든 문자를 null로 (적어도 5.3 PHP에서; 다시, 나를 위해 5.2 전에 작동했습니다. 아래 코드에서 내 변경 사항을 작동하도록하려면 내 의견을 말하고있어. – ransomweaver

+0

응답 자체로 이동했습니다. – ransomweaver

3

이 서비스 브라우저 버그, 큰 따옴표 서비스 브라우저에 입력을 무시하고이 문자열은 숫자로 시작합니다. 나는 서비스 브라우저를 통해 몇 가지 방법을 테스트하면서 동일한 문제를 겪고 있었고 정상적으로 작동했다.