Проблема с функцией ввода amfPHP - PullRequest
1 голос
/ 04 декабря 2009

Я пишу функцию amfPHP, которая должна принимать строковые данные. Он принимает буквенно-цифровые символы без проблем, но, к сожалению, он возвращает данные как «2», если я посылаю «2.UgnFl4kAWovazp_tVo6fHg __. 86400.1260025200-571701419» в качестве параметра.

вот функция (очень простая, как вы можете видеть)

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

Ответы [ 4 ]

3 голосов
/ 10 февраля 2011

Чтобы обойти эту ошибку браузера службы, заключите двойную кавычку в запись браузера службы, если вы ожидаете строку аргумента, и эта строка начинается с цифры. У меня была такая же проблема при тестировании некоторых методов через сервисный браузер, и он работал нормально.

1 голос
/ 29 декабря 2010

Это поведение на самом деле присутствует в браузере службы AMFPHP (ошибка), поэтому его легко принять за AMFPHP, который преобразует строки, начинающие число, в int. Однако проблема в коде отправки. Например, отправка строки в кодировке urlen через шлюз json работает правильно (код Objective 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);
        }
    }
1 голос
/ 04 декабря 2009

Я только что попробовал это с простой настройкой, и просто записал результаты в файл из сервисного браузера, и это, кажется, мне подходит. Так что, похоже, проблема в вызывающем конце.

Другая возможность заключается в том, что amfphp изменяет тип данных возвращаемого значения со строки на int из-за ведущего целого числа. Попробуйте поместить какой-нибудь буквенно-цифровой символ в начало возвращаемой строки и посмотрите, что это делает.

0 голосов
/ 21 апреля 2010

двойные кавычки ваших строк ... это сработает.

...