amfPHP功能输入故障

时间:2009-12-04 15:27:02

标签: php flash amf amfphp

我正在写一个amfPHP函数,它应该接受字符串输入。它没有问题需要字母数字字符,但不幸的是,如果我发送“2.UgnFl4kAWovazp_tVo6fHg __。86400.1260025200-571701419”作为参数,它会将数据返回为“2”。

这是函数(真正简单,你可以看到)

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

4 个答案:

答案 0 :(得分:3)

要绕过此服务浏览器错误,如果您希望参数上的字符串以及此字符串以数字开头,请在服务浏览器上双引号。我通过服务浏览器测试一些方法时遇到同样的问题,并且工作正常。

答案 1 :(得分:1)

我只是通过一个简单的设置尝试了这个,只是将结果写入服务浏览器中的文件,对我来说似乎没问题。所以这个问题似乎就在呼叫结束。

另一种可能性是,由于前导整数,amfphp将返回值的数据类型从字符串更改为int。尝试在返回字符串的开头添加一些字母数字字符,看看它是做什么的。

答案 2 :(得分:1)

此行为实际上存在于AMFPHP服务浏览器(bug)中,因此很容易将其误认为是将数字前导字符串转换为int的AMFPHP。但问题出在发送代码中。例如,通过json网关发送urlencoded字符串正常工作(目标C代码):

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

passMD5可能有一个前导号码。但是,如果我在服务浏览器中为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);
        }
    }

答案 3 :(得分:-1)

双引号你的字符串......这将有效。