2013-04-09 53 views
0

在我的iOS應用程序代碼中,我傳遞了一個NSBictionary在HTTPBody 所以我的PHP可以檢查用戶是否存在於數據庫中。PHP break'file_get_contents'into array

-(void)checkUser 
    { 
     NSDictionary *userDict = [NSDictionary dictionaryWithObjectsAndKeys: 
     sessionId, @"sessionId", 
     sessionName, @"sessionName", 
     nil]; 

     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:userDict 
         options:NSJSONWritingPrettyPrinted error:nil]; 
     NSString *jsonString = [[NSString alloc] initWithData:jsonData 
     encoding:NSUTF8StringEncoding]; 

     // initialize and open the stream 
     NSURL *url = [NSURL URLWithString:@"http://www.mysite.com/userValidate.php"]; 
     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
     [request setHTTPMethod:@"POST"]; 
     [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
     [request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]]; 

     [NSURLConnection connectionWithRequest:request delegate:self]; 
    } 
在PHP文件IM USIG

$raw = file_get_contents('php://input'); 

並取回

post = "{\n \"sessionId\" : \"132156\",\n \"sessionName\" : \"My Name\"\n}"; 

我跟着這個帖子https://stackoverflow.com/a/5078426/1333294這種方法添加到我的PHP文件

function getTestPostData() 
    { 
    $post_data = explode("\n", file_get_contents('php://input')); 
    $result = array(); 

    foreach($post_data as $post_datum) { 
     $pair = explode(":", $post_datum); 
     $result[urldecode($pair[0])] = urldecode($pair[1]); 
     } 
    return $result; 
    } 

現在我「M越來越

explode = { 
     " \"sessionId\" " = " \"132156\","; 
     " \"sessionName\" " = " \"My Name\""; 
     "{" = ""; 
     "}" = ""; 
    }; 

我怎麼能 '乾淨' 的陣列的任何進一步所以我ARRY會像

 "sessionId" = "132156"; 
     "sessionName" = "My Name"; 

感謝

+0

擺脫一個通過使用'文件爆炸()' – 2013-04-09 11:12:20

+1

你應該'json_decode'那個字符串,*如果它是有效的JSON。 – deceze 2013-04-09 11:12:32

回答

0

它看起來像一個JSON數組。嘗試將字符串送入json_decode()

function getTestPostData() 
{ 
    $post_data = file_get_contents('php://input'); 
    $result = json_decode($post_data, true); 
    return $result; 
} 

這可以進一步減少,但使用原始變量清晰離開。

編輯:添加第二PARAM,給回的陣列VS,而不是`爆炸( 「\ n」 個,file_get_contents()函數)`對象

+0

對不起,但即時通訊新的PHP,我需要做像json_decode($ raw = file_get_contents('php:// input')); ? – ItayAmza 2013-04-09 11:14:14

+0

我的Mac決定這是一個很好的時間來暗戀......我會在幾分鐘內檢查它,謝謝 – ItayAmza 2013-04-09 11:21:37

+0

即時通訊使用json_decode()方法時,PHP根本沒有返回答案,但它確實當我沒有使用它,確實這意味着我沒有在我的客觀c代碼中正確編碼json? – ItayAmza 2013-04-09 11:39:51