2013-02-08 3 views
1

페이스 북으로 내 페이지에 로그인 한 사용자의 나이를 얻기 위해 생일을 맞으려고합니다. 나는 계속 내 프로필로 로그인하려고 노력하고 있지만 잘못된 나이를주고 있습니다. 아래는 내가 process_facebook.php에있는 코드 (내가 int를한다 "나이"라는 필드와 데이터베이스가)된다페이스 북의 허락을받은 "생일"

:

function getAge($birthday) { 
     $dt = strtotime($birthday); 
     // convert the birthday to a standard format (UNIX epoch) 
     $a = gmdate('Y') - gmdate('Y',$dt); 
     // find the difference of years 
     $a = (int)$a; 
     return $a; // return the age. 
    } 

전형적인 process_facebook.php 프레임 워크 내를,이이

$birthday = $me['birthday']; 


$age = getAge($birthday); 

나는 내 생일이 1987 년 1 월 4 일 (페이스 북에서 $ birthday에 "01/04/1987"문자열로 지정되어야 함)임을 알고 있습니다. 그러나 데이터베이스에 필드가 채워지면 숫자는 43이됩니다.

"01/04/1987"을 $ birthday로 별도로 실행하려고 시도했지만 26 번 괜찮습니다.

나는 무슨 일이 일어나고 있는지 잘 모르겠다. (페이스 북이 나에게 잘못된 생일을 넘길 수 있었 을까?) 미리 도움을 주셔서 감사합니다.

+4

1970 년 이래로 43 년이되었습니다 ... strtotime()이 실패하고 0을 반환하고, 1970 년 1 월 1 일을 반환하므로 43이 실제로 "적절한"나이입니다. 예 : 어떤 드라마 북이 정말로 돌아 왔는지 그리고 왜 strtotime이 그것에 질식하는지 확인하십시오. –

+0

죄송하지만이 변수는 어떻게 볼 수 있습니까? 그것은 process_facebook.php에 있습니다; 변수를 출력하면 어디에 나타 납니까? 또는 브라우저 콘솔 등에서 그것을 어떻게 볼 수 있습니까? – user1072337

+0

'var_dump ($ birthday); die()'를 getAge() 함수에 추가합니다. 그러면 스크립트는 페이스 북이 보낸 것을 뱉어 내고 중단합니다. –

답변

0

신청서를 실제로 수락하면 Graph API Explorer에 체크인하십시오. user_birthday. 오른쪽 상단의 드롭 다운에서 응용 프로그램을 선택하고 출력에는 birthday 필드이없는 경우이

me?fields=birthday 

에 텍스트 상자를 채우기, 당신은 이 앱을 부여한 권한을 확인하는 액세스 토큰을 가져 오기를 클릭 할 수있다.

user_birthday 귀하의 앱이 자동 인증을 허용하고 $me['birthday']이 비어 있다고 생각합니다. 그래서 계산 된 나이가 1970 년 이래 43 세가되는 이유입니다. 그의 말은 Marc B입니다. 확인하려면 단순히 var_dump($me['birthday'])을 사용하십시오.

this comment을 확인하십시오.

+0

이것이 문제였습니다. 이 제안에 대해 대단히 감사합니다. 좋은 사람. – user1072337