سؤال

أنا أكتب وظيفة AMFPHP التي يجب أن تأخذ مدخلات السلسلة. يستغرق الأمر أحرف أبجدية رقمية دون مشكلة، ولكن لسوء الحظ، تقوم بإرجاع البيانات "2" إذا أرسلت "2.gnfl4kawovazp_tvo6fhg __. 86400.1260025200-571701419" كمعلمة.

هنا هي الوظيفة (حقيقية بسيطة كما ترون)

function checkOpenSession($guid, $session_key) {
        return $session_key;
}
هل كانت مفيدة؟

المحلول

لقد جربت هذا فقط مع إعداد بسيط، وكتابة النتائج فقط إلى ملف من متصفح الخدمة ويبدو أنه على ما يرام بالنسبة لي. لذلك يبدو أن المشكلة في نهاية الدعوة.

احتمال آخر هو أن AMFPHP يغير نوع بيانات القيمة التي تم إرجاعها من سلسلة إلى INT بسبب عدد صحيح. حاول وضع بعض الأحرف الأبجدية الرقمية في بداية سلسلة الإرجاع ومعرفة ما يفعله.

نصائح أخرى

لتجاوز علة متصفح الخدمة هذه، اقتباس مزدوج الإدخال الخاص بك على مستعرض الخدمة إذا كنت تتوقع سلسلة على الوسيطة وتبدأ هذه السلسلة برقم. كنت أواجه نفس المشكلة اختبار بعض الأساليب عبر متصفح الخدمة وعملت بشكل جيد.

هذا السلوك موجود بالفعل في متصفح خدمة AMFPHP (BUG)، لذلك من السهل أخطئه ك AMFPHP الذي يقوم بتحويل الأوتار الرائدة إلى INT. ومع ذلك، فإن المشكلة في رمز الإرسال. على سبيل المثال، إرسال سلسلة URLENCODED من خلال بوابة JSON تعمل بشكل صحيح (رمز 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);
        }
    }

اقتباس مزدوج سلاسلك ... التي ستعمل بها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top