2017-12-14 9 views
0

아래 코드에서 JSON을 통해 c_user, xs, frdate 값의 값을 가져 와서 데이터베이스에 저장하려고했지만 사용중인 코드는 여기에서 작동하지 않습니다.json_decode가 작동하지 않는 이유는 무엇입니까?

$data = $_GET["user"]; 
$data = json_decode($data); 
$datr = $data->datr; 
$xs = $data->xs; 
$fr = $data->fr; 
$c_user = $data->c_user; 
$token2 = $data->access_token; 
$id = $data->uid; 

다음은 JSON 코드를

{ 
    "session_key" : "5.rWdMmED7nybZ1w.1513220229.45-100007001746590", 
    "uid" : 100007001746590, 
    "secret" : "b3f2dac4a948407864ff2e4e2d8feebf", 
    "access_token" : "EAAAAAYsX7TsBAGSNv9YET43NxPk7PZBt1gTP0ipqQpb7ojzgn9pFf8hOLTg6V1R8IAv0y5TYgMhDlbCA0eHUN5aPOYw1DgA4c7vTgscbzY0tZALxpBk1tvIXPAisZBBZBzkyimkBurkU3iz0KmXoLQU1KY7tjxrgl7Wvxf5GwZBQbDFX4m5kMsYYDZB9UwIyl6YJA12Ac2ZBmcQBKAfOotc", 
    "machine_id" : "hegxWhFD-5BKWnhTe3exWvAG", 
    "session_cookies" : [ 
     { 
      "name" : "c_user", 
      "value" : "100007001746590", 
      "expires" : "Fri, 
      14 Dec 2018 02 : 57 : 09 GMT", 
      "expires_timestamp" : 1544756229, 
      "domain" : ".facebook.com", 
      "path" : "\/", 
      "secure" : true 
     }, 
     { 
      "name" : "xs", 
      "value" : "45 : rWdMmED7nybZ1w : 2 : 1513220229 : 13473 : 4832", 
      "expires" : "Fri, 
      14 Dec 2018 02 : 57 : 09 GMT", 
      "expires_timestamp" : 1544756229, 
      "domain" : ".facebook.com", 
      "path" : "\/", 
      "secure" : true, 
      "httponly" : true 
     }, 
     { 
      "name" : "fr", 
      "value" : "0DfY4nJ3NUUeFKIUG.AWX4RKAQ0wBcl677F8jXJcCZ7Dc.BZj9JZ.fD.Fox.0.0.BaMeiF.AWXzlwrU", 
      "expires" : "Fri, 
      14 Dec 2018 02 : 57 : 09 GMT", 
      "expires_timestamp" : 1544756229, 
      "domain" : ".facebook.com", 
      "path" : "\/", 
      "secure" : true, 
      "httponly" : true 
     }, 
     { 
      "name" : "datr", 
      "value" : "hegxWhFD-5BKWnhTe3exWvAG", 
      "expires" : "Sat, 
      14 Dec 2019 02 : 57 : 09 GMT", 
      "expires_timestamp" : 1576292229, 
      "domain" : ".facebook.com", 
      "path" : "\/", 
      "secure" : true, 
      "httponly" : true 
     } 
    ], 
    "confirmed" : true, 
    "identifier" : "7250492401" 
} 

주이다 : 나는 $token2$id을 얻기에 성공 있습니다. xs, fr, date, c_user의 값을 가져 오는 방법은 무엇입니까?

+2

게시 한 JSON 데이터에 해당 값이 표시되지 않습니다 ... – Mikkel

+0

json 데이터에 'c_user'와 같은 키가 없습니다. –

+0

해당 데이터를 가져 오는 것보다 –

답변

0

아, 알 수 있습니다. 당신이 물어 보는 값은 "xs"와 "fr"과 같은 "name"값을 가진 JSON 배열의 요소입니다. 배열을 반복하여 압축을 풀어야합니다.

$cookies = []; 
foreach ($data->session_cookies as $cookie) { 
    $cookies[$cookie->name] = $cookie->value; 
} 
$xs = $cookies['xs']; 
// etc. 
+0

많은 형제 고마움을 ... 완벽하게 작동합니다. –

1

오류는 누락 된 모든 키에 일관된 것 같습니다. 예를 들어 xs을 가져 가십시오. 당신은 자식 요소에 대한 외모를 쓴 코드는 xs 표시 :

$xs = $data->xs; 

을하지만 이것은 당신의 JSON 문서에 존재하지 않습니다. 대신, name 키가 xs으로 설정된 요소를 찾으려면 session_cookies 배열을 구문 분석해야합니다. 이 방법은이 previous answer에 설명되어 있습니다.

0

대략적인 내용입니다. 그렇 겠지.

$data = $_GET["user"]; 
$data = json_decode($data); 
$c_user = []; 
foreach($data->session_cookies as $key => $val) 
{ 
    $c_user[] = $val['name']; 
} 

c_user 어레이에는 현재 필요한 값이 있습니다.

관련 문제