私たちはphp/MySQLに既存の会員資格を設定しており、Facebook登録とログインを統合しようとしています。ログインフォームと登録フォームはインポートされ、データベースに新しいユーザーを作成するPHP/MySQLコードに接続されます。しかし、複数のログオン(例えば、1つのサイトログオン、1つのFacebookログオン)を持つ単一のユーザーを防ぐために、メンバーデータベーステーブルに新しい行を追加する前に、ユーザーの電子メールアドレスを確認する必要があります。Facebook regsitration plugin - async validation(email)
これはPHP/MySQLコードで行うことができますが、クロスサイト/ FBメンバーシップのすべての順応を処理しなければならず、FB登録アプリに接続したくないサイトメンバーになることなくより良い解決策は、ユーザーがデータベースに既に存在する電子メールアドレスの下に登録するのを防ぐことです(むしろ、新しいパスワードを取得するように指示し、更新すると、Facebookプロファイルを既存のプロファイルに接続する)。私たちは解決策を探して数週間探しており、Facebook Developers Async Validation(http://developers.facebook.com/docs/plugins/registration/advanced/)やstackexchangeフォーラムに相談してきましたが、これまでになかった電子メールアドレスをデータベースに対して検証するソリューションを実装することができ、それに応じて登録を防止/許可する。
コード我々はこれまでに
//connect to the database
include 'mysql_connect.php'
$email = $_GET('email');
$data = array();
$sqlCommand = "SELECT * FROM members WHERE email='$email'";
$query = mysql_query($sqlCommand) or die (mysql_error());
$num_rows = mysql_num_rows($query);
if($num_rows>0){
$email_check = $row['email'];
$data['email'] = $email_check;
} else {
$data['error'] = "true";
}
echo json_encode($data);
<fb:registration redirect-uri="http://www.mysite.com/register.php"
fields='[{"name":"name"},{"name":"email"}
{"name":"username","description":"Username","type":"text"}]'
onvalidate="validate_async"></fb:registration>
<script src="https://code.jquery.com/jquery-1.4.4.min.js"></script>
<script>
function validate_async(form, cb) {
$.getJSON('http://www.mysite.com/register_check.php/' + form.email + '?callback=?',
function(response) {
if (response.error) {
// Username isn't taken, let the form submit
cb();
}
cb({username: 'That email is taken'});
});
}
</script>
register_check.phpは残念ながら、このプロセスはまったく機能していませんされています。登録フォームは、情報をデータベースに検証したり渡すことなく、無限にハングアップするだけです。私たちは、getJSONとサーバー側のPHPを正しく記述する方法についてかなりの研究を行ってきましたが、レンガの壁に浮かび上がったので、この問題に関する助言や助言を非常に感謝しています。