Php Facebook应用程序身份验证在my DB复制数据

Php Facebook应用程序身份验证在my DB复制数据,php,mysql,database,facebook,Php,Mysql,Database,Facebook,在阅读了很多之后,我的fb应用程序终于实现了我的预期(收集数据并将其存储在我的DB中)。但是,如果用户返回页面选项卡中的应用程序(用户已登录该应用程序),表中的条目将重复。 正如我在教程中读到的,我的代码中有一部分验证用户是否已经在数据库中,如果这是一个新用户,那么它将记录数据,如果不是什么都没有 请看一下我的代码,并指导我解决它。谢谢 我没有发现错误,但问题似乎就在这里: $query = mysql_query("SELECT * FROM users WHERE oauth_provid

在阅读了很多之后,我的fb应用程序终于实现了我的预期(收集数据并将其存储在我的DB中)。但是,如果用户返回页面选项卡中的应用程序(用户已登录该应用程序),表中的条目将重复。 正如我在教程中读到的,我的代码中有一部分验证用户是否已经在数据库中,如果这是一个新用户,那么它将记录数据,如果不是什么都没有

请看一下我的代码,并指导我解决它。谢谢

我没有发现错误,但问题似乎就在这里:

 $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND  oauth_uid = ". $user_profile['id']);  
      $result = mysql_fetch_array($query);  
这是我的密码:

 <?php
 define('db_user','xxx');
 define('db_password','xxx');
 define('db_host','xxx.xxx.com');
 define('db_name','xxx');

 // Connect to MySQL
 $dbc = @mysql_connect (db_host, db_user, db_password) OR die ('Could not connect to   MySQL: ' . mysql_error() );
// Select the correct database
mysql_select_db (db_name) OR die ('Could not select the database: ' . mysql_error() );
mysql_set_charset('utf8',$dbc);

require 'src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId'  => 'xxx',
'secret' => 'xxx',
  'cookie' => true));


 // Get User ID
 $user = $facebook->getUser();

 // We may or may not have this data based on whether the user is logged in.
 //
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$fbuid = $facebook->getUser();
 $user_profile = $facebook->api('/me');



   } catch (FacebookApiException $e) {
   error_log($e);
   $user = null;
   }
     }else{
   header('Location: index.php');

    }
    //know if the user is in the db 
      $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user_profile['id']);  
      $result = mysql_fetch_array($query);  


    if(empty($result)){ 
      $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username, first_name, last_name, birthday, email, pic_square ) VALUES    ('facebook', {$user_profile['id']}, '{$user_profile['name']}', '{$user_profile['first_name']}','{$user_profile['last_name']}','{$user_profile['birthday']}','{$user_profile['email']}', '{$user_profile['pic_square']}')");  
  $query = mysql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());  
  $result = mysql_fetch_array($query) or die ( mysql_error () );  


}  


   // Login or logout url will be needed depending on current user state.
    if ($user) {
     $paramsout = array('next'=>'http://www.mywebsite.com/test/logout.php');
     $logoutUrl = $facebook->getLogoutUrl($paramsout);
     }
     ?>
     <html><body>welcome</body></html>

您可以配置数据库,使电子邮件地址成为唯一的索引字段。这将有助于防止重复数据。@kobaltz。。谢谢:D我将阅读如何做到这一点。