-1

嘿,我有一个问题...

我想当用户从我的 facebook 应用程序共享一个链接时,我将他的 id 输入我的数据库。

我分享链接的方式是通过我修改过的 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,但数据库中什么都没有?

谁能告诉我怎么了?

4

1 回答 1

4

无效的字段名称:

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

这看起来像是减去了两个字段,而不是一个字段。您可能希望使用反引号对其进行转义,以强制将其视为单个字段名称:

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

在大图上,您有一个巨大的SQL 注入漏洞。停止处理此代码并了解如何在有人破坏您的服务器之前避免此问题。

您还假设查询成功,这是一件坏事。您在 connect() 调用中得到了错误处理,但没有其他地方。永远不要假设查询已经成功。之后总是检查错误。

于 2012-11-06T18:28:34.740 回答