AMFPHP Fonksiyon Giriş Trouble

4 Cevap php

Ben dize girişi götürmelidir AMFPHP işlevi yazıyorum. Bu bir sorun olmadan alfanümerik karakter alır, ama ben parametre olarak "2.UgnFl4kAWovazp_tVo6fHg__.86400.1260025200-571701419" göndermek ne yazık ki "2" olarak veri döndürür.

burada fonksiyonu (Gördüğünüz gibi basit bir gerçek)

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

4 Cevap

Ben sadece basit bir kurulum ile çalıştı ve sadece hizmet tarayıcısından bir dosyaya sonuçları yazılı ve benim için ok gibi görünüyor. Yani sorun çağrı sonunda olacak gibi görünüyor.

Bir başka olasılık AMFPHP çünkü önde gelen tamsayı bir int bir dize döndürülen değerin veri türünü değiştirir olmasıdır. Dönüş dize başında bazı alfanümerik karakter koyarak deneyin ve o ne yaptığını görmek.

Eğer bir argüman ve bu dize bir dize bir sayı ile başlar bekliyoruz bu hizmet tarayıcı hata, çift tırnak hizmeti tarayıcıdaki giriş atlamak için. Ben hizmet tarayıcı üzerinden bazı test yöntemleri aynı sorunu yaşıyor ve iyi çalıştı.

Bu davranış aslında AMFPHP hizmeti tarayıcı (bug) mevcut, bu yüzden int sayı lideri dizeleri dönüştüren AMFPHP olarak hata yapmak kolaydır. Ancak sorun gönderen kodu bulunmaktadır. Json ağ geçidi üzerinden bir urlencoded dizesini göndererek Örneğin (Objective C kodu) düzgün çalışır:

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

PassMD5 lider bir numara olabilir nerede. Ben hizmet tarayıcıda checkAuth yöntemi için uygun değerleri girin Ama eğer bozuldu.

[Değiştir]

$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);
        }
    }

çift ​​tırnak dizeleri ... bu çalışacaktır.