php - FaceBook 注册插件异步验证表单(检查用户名可用性)

标签 php mysql facebook json asynchronous

好的,所以我已经用谷歌解决了这个问题,并且 FB Advanced Registration文档也没有帮助。我想要一个 Facebook 注册,用户可以在其中选择(并检查可用性)他的用户名,如下所示:
(我打算做但没有做的截图,因为我不能在这个问题中直接发布图片) A link to Screenshot of what I wanted !

我计划使用 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> 

我想知道我在 checkUsername.php 中到底写了什么。
现在我已经为 checkUsername.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 函数,我将非常感激,并且还帮助我解决 checkUsername.php,因为我对 JSON、(JSONP) 等有非常粗略的了解! 很乐意付出更多努力来解释我的问题,因为这已经困扰我一周了! 很高兴接受你们的宝贵帮助!

最佳答案

$username = $_GET('username');

$_GET 不是函数……也许您应该先熟悉一些 PHP 基础知识?

除此之外,您的脚本逻辑看起来有点奇怪......

if($num_rows>0){
    $data['error'] = "true";
} else {

    $data['username'] = $row['username'];
}

如果现在找到了行,那么您想要访问不存在的行中的用户名字段

(而且你甚至没有引用你作为 GET 参数获得的用户名,OMG ......)


根据是否有行将错误设置为真或假。

然后,在您的 JS 函数中,如果 error=true,则给出“用户名已被使用”消息。

关于php - FaceBook 注册插件异步验证表单(检查用户名可用性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929543/

相关文章:

php - PDO::bindValue 未定义

mysql - 是否可以在特定行之后查询下一个 n 结果?

PHP - 无法加载动态库 '/usr/lib64/php/modules/

mysql - 可以在表中检查是否有属性位于另一个表的列中吗?

ios - 如何在我的应用程序 iPhone 中通过 fbconnect 获取用户的 facebook 个人资料图片?

facebook - 为 Facebook 页面插件插入代码时收到错误 "Cannot listen to an undefined element"

php - 如果出现错误,pg_connect 会非常慢

php - 在 CodeIgniter 的另一个 Controller 中调用 Controller 函数

php - HBitmap字节数组到php

ios - Facebook Audience Network 中的代码=1001 "No fill"错误