好的,所以我有谷歌解决这个问题,FB高级注册文档也没有帮助。 我想有一个Facebook注册,用户可以像这样选择(并检查)他的用户名的可用性:
(我计划做什么但未能做到的截图,因为我无法直接在这个问题中发布图片) 指向我想要的屏幕截图的链接!
我计划使用 PHP 在 mysql 中检查我的数据库中用户名的可用性,但我被这个奇怪的 JSON 回调所困,我无法理解。我的注册插件看起来像这样
<fb:registration
fields='[{"name":"name"},{"name":"username","description":"Username","type":"text"}]'
onvalidate="validate_async"
redirect-uri="http://mysite.com/loginFB.php"
fb_only="false"
width="530">
</fb:registration>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
function validate_async(form, cb) {
// $.getJSON('https://graph.facebook.com/' + form.username + '?callback=?',//CODE obtained from FB documentation
$.getJSON('https://mysite.com/checkUsername.php?username=' + form.username + '?callback=?',
function(response) {
if (response.error== "false") {
// Username isn't taken, let the form submit
cb();
}
cb({username: 'That username is taken, Sorry!'});
});
}
</script>
我想知道我到底在用户名检查中写了什么.php。
现在我想出了以下代码来检查用户名.php它不起作用:
<?php
$conn = dbconnect(GLOBAL_Db);
$username = $_GET['username'];
$data = array();
$table = mysql_real_escape_string(GLOBAL_Db. "." . GLOBAL_Users);
$sqlCommand = "SELECT * FROM ".$table." WHERE username='$username'";
$query = mysql_query($sqlCommand) or die (mysql_error());
$num_rows = mysql_num_rows($query);
if($num_rows>0){
$data['error'] = "true";
} else {
$data['error'] = "false";
}
echo json_encode($data);
?>
这段代码没有给我"用户名被占用,对不起"消息,为什么???
如果有人能真正帮助我在脚本中使用这个getJSON函数,并且还帮助我检查用户名,我将不胜感激.php因为我对JSON,(JSONP)等有非常粗略的了解!很高兴付出更多的努力来解决我的问题,因为这已经困扰了我一周!很高兴接受你们的一些宝贵帮助!
$username = $_GET('username');
$_GET 不是一个函数...也许你应该先熟悉一些PHP基础知识?
除此之外,你的脚本逻辑看起来有点奇怪......
if($num_rows>0){
$data['error'] = "true";
} else {
$data['username'] = $row['username'];
}
如果现在找到行,那么您想访问不存在的行中的用户名字段吗?
(而且您甚至没有引用您获得的用户名作为 GET 参数,天哪......
将错误设置为 true 或 false,具体取决于是否有行或无行。
然后,在你的JS函数中,如果error=true,则给出"用户名被占用"消息。