2012-01-11 4 views
0

나는 업로드하거나 투표를 위해 입력 할 수있는 PHP를 사용하여 그림 경연 대회를 개최했습니다. 또한 한 페이스 북 사용자 만 최대 1 개의 그림을 이벤트에 업로드 할 수 있습니다.다시 제출하지 못하도록 사용자의 페이스 북 ID를 확인하는 방법

fbID에 따라 이미 한 번 제출 한 동일한 사용자가 컨테스트 참가 버튼을 다시 클릭 할 수 없도록 클릭 한 경우 메시지 상자가 튀어 나오도록 MySQL 데이터로 페이스 북 ID를 확인하려면 어떻게해야합니까? "당신은 이미 한 번 제출 했어"라고 말했습니까?

여러분이 제안을하기를 바랍니다. 감사합니다. 그리고 저를 도와 주신 모든 분들께 감사드립니다.

답변

3

데이터베이스의 사진 제출 옆에 Facebook 사용자 ID를 저장하기 만하면됩니다.

사진 데이터가 포함 된 표가 있다고 가정합니다. 페이스 북 사용자 ID를 저장할 새로운 필드를 만드십시오. 그런 다음 사용자가 앱을 방문하거나 ID가 이미 데이터베이스에 있는지 확인합니다. 그렇다면 업로드 양식을 제공하지 말고 오류 메시지를 보내십시오. 그렇지 않은 경우 업로드하도록 허용합니다.

편집 : 체크 아웃 Facebook's SDK. Facebook ID가 포함 된 앱 페이지를 보는 사용자의 세부 정보를 가져 오기위한 예제가 있어야합니다. 그런 다음 스크립트에서 사용할 수 있습니다.

<?php 

require 'facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret' => 'YOUR_APP_SECRET', 
)); 

$user = $facebook->getUser(); 

if ($user) { 
    try { 
     $user_profile = $facebook->api('/me'); 
    } 
    catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
} 

if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} 
else { 
    $loginUrl = $facebook->getLoginUrl(); 
    echo "<script>top.location.href='$loginUrl';</script>"; 
    exit; 
} 

// if we're here, the user has successfully authenticated 
// you now have access to their profile in $user_profile 

$userId = intval($user_profile['id']); 

// logic goes here to query database and check if $userId 
// has already been used to submit a photo or not 
+0

안녕하세요 martin, yeap 나는 "facebookID"라고하는 facebook 사용자 ID를 저장하는 mySQL 필드가 있습니다. 나는 그것을 어떻게 체크 할 것인가의 흐름을 이해한다. 그러나 문제는 내가 정말로 좋은 코더가 아니라는 것이다. 그리고 나는 잘 작동하지 않는 것으로 판명 된 모든 if else 문을 가지고있다. 내가 어떻게 그런 일을 할 수 있었는지 나중에 내가 다시 그런 일을 만나면 나는 그것을 참조 할 수 있을까? 회신 해 주셔서 고맙고 귀찮게해서 죄송합니다. – SupaFlybaba

+0

그냥 메모 : 값을 포함하는 숨겨진 fbID 필드 = 는 비밀리에 fbID를 가져가는 방법입니다. 다시 한번 고마워요. – SupaFlybaba

+0

양식을 제출할 때 Web Inspector를 사용하여 다른 사람을 사칭하도록 변경할 수 있으므로 페이지에 ID를 버릴 필요가 없습니다. –

-1

사용자를 인증하고 FB 쿠키를 가져와야합니다.

on the FB developer site 문서를 참조하십시오.

일단 ID가 있으면 DB에서 가져 와서 사용자가 제출했는지 여부를 확인할 수 있습니다.

관련 문제