2015-01-01 2 views
0

의 배열로 포맷 된 $의 _POST를 구문 분석 습 PHP 스크립트의 제출이 형태로 전송되는 $ _POST 포맷), 때로는 때때로 비어있는 "영수증 - 데이터"사전 : "...."(나는 왜 때로는 비어 있고 때로는 이해할 수 없었다). 비어있는 도착하기 시작하기 전에 첫 번째 요소를 인쇄하려고했지만 재미있는 아무것도 얻지 못했습니다.내가받을 PHP

간단히 말해, 이러한 게시를 가로 채고 영수증 데이터에 해당하는 값을 얻는 올바른 방법은 무엇입니까?

이에게 내가 최대 메시지 수당 유지하기 위해 약간의 덩어리를 벗고있는의 (매우 긴) 포스트 데이터 :

배열 ( [{ "수신 데이터": "MILOdwYJKoZIhvcNAQcCoILOaDCCzmQCAQExCzAJBgUrDgMCGgUAMIK_KAYJKoZIhvcNAQcBoIK_GQSCvhUxgr4RMAoCAQgCAQEEAhYAMAoCARQCAQEEAgwAMAsCAQECAQEEAwIBADALAgEDAgEBBAMMATgwCwIBCwIBAQQDAgEAMAsCAQ4CAQEEAwIBGzALAgEPAgEBBAMCAQAwCwIBEAIBAQQDAgEAMAsCARkCAQEEAwIBAzAMAgEKAgEBBAQWAjQrMA0CAQ0CAQEEBQIDARHWMA0CARMCAQEEBQwDMS4wMA4CAQkCAQEEBgIEUDIzMTAYAgEEAgECBBB를/[...] Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZX JtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjANBgkqhkiG9w0BAQUFAAOCAQEAXDaZTC14t_2Mm9zzd5vydtJ3ME \/BH4WDhRuZPUc38qmbQI4s1LGQEti_9HOb7tJkD8t5TzTYoj75eP9ryAfsfTmDi1Mg0zjEsb_aTwpr \/yv8WacFCXwXQFYRHnTTt4sjO0ej1W8k4uvRt3DfD0XhJ8rxbXjt57UXF6jcfiI1yiXV2Q \/Wa9SiJCMR96Gsj3OBYMYbWwkvkrL4REjwYDieFfU9JmcgijNq9w2Cz97roy \/5U2pbZMBjM3f3OgcsVuvaDyEO2rpzGU_12TZ \/wYdV2aeZuTJC_9jVcZ5_oVK3G72TQiQSKscPHbZNnF5jyEuAF1CqitXa5PzQCQc3sHV1ITGCAcswggHHAgEBMIGjMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECgwKQXBwbGUgSW5jLjEsMCoGA1UECwwjQXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMxRDBCBgNVBAMMO0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zIENlcnRpZmljYXRpb24gQXV0aG9yaXR5AggYWUMhcnSc \/DAJBgUrDgMCGgUAMA0GCSqGSIb3DQEBAQUABIIBADAfG0M5Lzrl9bhrTKD9nR18Q8HO6zC6XaGtCYtf8a7cE8voswN59EkVCr0yMpcwYxmRjTllJBxJwbPKx3u81B7shTzN5xYfe26nuKqDZBZDo7FqWZSDOhcZ \/E6TEylmWg6kHmWXZJuebDFnLKhQwsgl3H \/atOW4eywXAij_OvPBwPiPc9IBgq4u35oqQL5d2YV38ukBi \/ToqT97 \/WG5qvb1JsUDdFoqRuJyA4CCaa8d BlZGDJar29_CjsniFJDz9 \/NtUcepZTy3T78POFe2cr_Enrl8E9drcrS4xe5Um9R_CVDNwCgoD1bwYA7M5CjrzNO1dqiXLE59d1i3hgSMS4UxnGLGlXFmlF7DZsjwZil7Eec3XtIaJUlLgnkipOuVUqD1nYw6oBAkCursLDC9AlroN5kWMcEXQXRUgRCItvntJoN897cJX6uXpaaSbiDgXbrwTqnM3/tzHjJgI5T68eI5Dp0LDdxT5FcSd_y3sePf4eTNrJN/eQDMb44ytDg7GOIsG/qiPyHzunp2FrTZZWBIdDP1MvFmLsRoDqvutNqmX5lw3Hobghzk] => { "} )

로 파싱시 :

{

$json=json_encode($_POST); 
$data=json_decode($json, TRUE); 

$ 데이터 형태를 취한다" \ " 수신 데이터의 \ "\"MILP9wYJKoZIhvcNAQcCoILP6DCCz_QCAQExCzAJBgUrDgMCGgUAMIK \/qAYJKoZIhvcNAQcBoIK \/mQSCv5Uxgr_RMAoCAQgCAQEEAhYAMAoCARQCAQEEAgwAMAsCAQECAQEEAwIBADALAgEDAgEBBAMMATgwCwIBCwIBAQQDAgEAMAsCAQ4CAQEEAwIBGzALAgEPAgEBBAMCAQAwCwIBEAIBAQQDAgEAMAsCARkCAQEEAwIBAzAMAgEKAgEBBAQWAjQrMA0CAQ0CAQEEBQIDARHWMA0CARMCAQEEBQwDMS4wMA4CAQkCAQEEBgIEUDIzMTAYAgEEAgECBBB5fbMSc4WXteSuDDZ20X4pMBsCAQACAQEEEwwRUHJvZHVjdGlvblNhbmRib3gwHAIBBQIBAQQU6dWy7_Sty19JvZ97C3lbZ7GoJG4wHgIBDAIBAQQWFhQyMDE1LTAxLTAxVDIwOjU4OjUxWjAeAgESAgEBBB [...] b24gQXV0aG9yaXR5AggYWUMhcnSc \/DAJBgUrDgMCGgUAMA0GCSqGSIb3DQEBAQUABIIBABjGnbWvGn1GhGrK99iWdL_fezRcgTN961IxTFvxt0Ob69SEgVgM \/99DbAOdE5xmVNkXucdNXY6RakQ \/CgoD1bwYA7M5CjrzNO1dqiXLE59d1i3hgSMS4UxnGLGlXFmlF7DZsjwZil7Eec3XtIaJUlLgnkipOuVUqD1nYw6oBAkCursLDC9AlroN5kWMcEXQXRUgRCItvntJoN897cJX6uXpaaSbiDgXbrwTqnM3 \/tzHjJgI5T68eI5Dp0LDdxT5FcSd_y3sePf4eTNrJN \/eQDMb44ytDg7GOIsG \/qiPyHzunp2FrTZZWBIdDP1MvFmLsRoDqvutNqmX5lw3Hobghzk ":"\ "}"}

그것은 대물-C 코드를 실행 한 결과이다

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:storeURL]; 
    [theRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    NSError *error; 
    NSDictionary *requestContents = @{ 
            @"receipt-data": [self.receipt base64EncodedStringWithOptions:0] 
            }; 
    NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestContents 
                 options:0 
                 error:&error]; 
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPBody:requestData]; 
    NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
    [NSURLConnection sendAsynchronousRequest:theRequest queue:queue 
         completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 
     [...] 
+0

가 인쇄 우리를 보여줄 수 전체 $ _POST 데이터? – phansen

+0

예, 꽤 오래되었으므로 원래 게시물에 입력했습니다. –

+0

그냥 첫 번째 요소를 디코딩 – ElefantPhace

답변

0

요청을 생성하는 코드를 살펴보면 데이터 형식을 전송하고 있음을 알 수 있습니다 JSON으로 시작 했으므로 먼저 json_decode를 통해 실행해야합니다.

$data=json_decode($_POST[0], TRUE); 

JSON으로 이미 전송되었으므로 먼저 json_encode를 통해 실행할 필요가 없습니다.

그런 다음 "영수증 데이터"값 자체에 대한, 우리는 목표 - C 코드베이스 64로 인코딩 것을 볼 수 있습니다, 그래서 당신은 base64_decode을 사용하여 디코딩해야합니다

$data['receipt-data'] = base64_decode($data['receipt-data']); 
+0

시도했지만 $ _POST 변수에서 빈 배열을 받도록 되돌 렸습니다. responseString = Array ( ) 이 임의의 동작의 원인은 무엇일까요? 물론 매개 변수는 url 요청에서 잘 시작합니다. 좋은 측정을 위해 기록했습니다. –

+0

좋습니다. 이번에 영수증을 가져 왔습니다 : 아직 오류 메시지는 : Notice : $ 64에서 64 행의 /var/www/html/iPhone/inarrivo/php/inapp/validateClass.php에있는 정의되지 않은 오프셋 : 0 : json_decode ($ _ POST [0], TRUE); 내가 이미 실험 한 것처럼. –

+0

어쩌면 [0]이 필요하지 않을 것입니다.'$ data = json_decode ($ _ POST, TRUE)'를 시도해 보셨습니까? – phansen