2012-11-06 32 views
-1

嘿,我有一個問題...共享一個FB-鏈接後,插入MySQL的不工作

我想,當用戶已經分享了我的Facebook應用程序的鏈接,我得到他的身份證到我D b。

我分享鏈接的方式是通過Facebook的對話框中的JavaScript的例子,我已經修改

共享javascript代碼

<script> 
     FB.init({appId: 'xxxx', channelUrl: 'xxxx', status: true, cookie: true}); 

     function postToFeed() { 

     // calling the API ... 
     var obj = { 
      method: 'feed', 
      link: 'https://developers.facebook.com/docs/reference/dialogs/', 
      picture: 'http://fbrell.com/f8.jpg', 
      name: 'Facebook Dialogs', 
      caption: 'Reference Documentation', 
      description: 'Using Dialogs to interact with users.' 
     }; 

     function callback(response) { 
      xmlhttp=new XMLHttpRequest(); 
      xmlhttp.onreadystatechange=function(){ 
       if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
        document.getElementById('msg').innerHTML = "Post ID: " + response['post_id']; 
        document.getElementById('post').style.display = "none"; 
       } 
      } 
      xmlhttp.open("POST","shared.php",true); 
      xmlhttp.send("id=xxx"); 
     } 

     FB.ui(obj, callback); 
     } 

</script> 

PHP代碼

$con = mysqli_connect("xxxx","xxx","xxx","xxx"); 
    if (!$con) { 
     die('Could not connect: ' . mysql_error()); 
    }; 

     mysqli_query($con, "INSERT INTO xxx (fb-id) VALUES (".$_POST['id'].")"); 

    mysqli_close($con) 

當我已經共享鏈接我得到了post_id,但沒有在數據庫中?

有人可以告訴什麼是錯的嗎?

+0

您可能想確認Facebook的政策允許您存儲該用戶的ID。 – Madbreaks

+0

我也允許存儲userIDs,但不是他們的用戶名和密碼;) –

回答

4

無效的字段名稱:

INSERT INTO xxx (fb-id) ... 
       ^^^^^ 

這看起來像是被減去兩個字段,不是一個單一的領域。你可能想用反引號,以逃避它,迫使其視爲單個字段名:

INSERT INTO xxx (`fb-id`) ... 

在greature圖片,您已經有了一個大張口SQL injection hole。停止使用此代碼並瞭解如何在有人銷燬您的服務器之前避免此問題。

您還假設查詢成功,這是一件壞事。你在connect()調用中有錯誤處理,但在其他地方沒有。永遠不要假設查詢成功。之後總是檢查錯誤。

+0

我知道theres在我的sql代碼中的一個重大缺口,但我會修復,當我可以插入到數據庫中的代碼,我只是已剝離代碼降到最低;) –