嘿,我有问题......
我想当用户从我的脸书应用程序中共享一个链接时,我会将他的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,但db中什么都没有?
有人能说出什么错吗?
答案 0 :(得分:4)
字段名称无效:
INSERT INTO xxx (fb-id) ...
^^^^^
看起来减去了两个字段,而不是单个字段。您可能希望使用反引号将其转义为强制将其视为单个字段名称:
INSERT INTO xxx (`fb-id`) ...
在精彩的图片中,你有一个重要的差距SQL injection hole。停止处理此代码并了解如何在有人销毁您的服务器之前避免此问题。
您还假设查询成功,这是一件坏事。你在connect()调用上有错误处理,但是没有其他地方。从来没有假设查询成功。之后一定要检查错误。