2

わかりましたので、Google にこの問題を解決してもらいました。FB Advanced Registrationのドキュメントも役に立ちませんでした。ユーザーが次のように自分のユーザー名を選択 (および利用可能かどうかを確認) できる Facebook 登録が必要です:
(この質問に直接写真を投稿できないため、計画しているが失敗したことのスクリーンショット) スクリーンショットへのリンク私が欲しかったもの

PHP を使用して mysql の DB からユーザー名が利用できるかどうかを確認する予定ですが、理解できなかったこの奇妙な 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 関数で私を助けてくれたら本当にありがたいです.JSON、(JSONP)などについて非常に大雑把な知識があるので、checkUsername.phpについても助けてください! 私の問題を説明するためにもっと努力して喜んでいます。これは今から1週間ほど私を悩ませています! 皆さんからの貴重な助けを喜んで受け入れます!

4

1 に答える 1

0
$username = $_GET('username');

$_GET は関数ではありません。最初に PHP の基本を理解する必要がありますか?

それに加えて、あなたのスクリプト ロジックは少し奇妙に見えます…</p>

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

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

行が見つかった場合、そこにない行のユーザー名フィールドにアクセスしたいですか?

(そして、GET パラメーターとして取得したユーザー名を引用していません、OMG …)


行があるかどうかに応じて、エラーを true または false に設定します。

次に、JS 関数で、エラー = true の場合、「ユーザー名が取得されました」というメッセージを表示します。

于 2012-06-08T08:31:52.543 に答える