まず、私はどこでも答えを探しましたが、答えに出くわしたことがないので、どこかで何かを逃した場合は許してください!
Facebook登録フォームを送信する前に、ユーザー名が存在するかどうかを確認しようとしています。また、検証が完了していなくても登録を継続できるようです!すべての検証が完了する前にフォームの送信を停止する方法はありますか?
多くの回答がこれを明らかに解決する投稿にリンクしていますが、実際に重要な部分が欠落しています。この回答の投稿はこちらです。
「Test02.aspx」の内容が欠落しているため、行き詰まっています。
Facebookの部分:
<fb:registration
redirect-uri="read.php/tools/echo"
fields="[{'name':'name'},{'name':'email'},{'name':'username','description':'Username','type':'text'},{'name':'password'}]"
onvalidate="validate_async">
</fb:registration>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
function validate_async(form, cb) {
$.getJSON('test02.aspx?username=' + form.username + '?callback=?',
function(response) {
if (response.error) {
// Username isn't taken, let the form submit
cb();
}
cb({username: 'That username is taken'});
});
}
</script>
私が知らないのは、test02.aspxに何を入れるかです。私はデータベースをチェックするためにphpを使用したいのですが、私はそれを理解することができません!
どんな助けでもいただければ幸いです!
前もって感謝します。
ミシュカ
- アップデート -
クライアント側へのいくつかの変更:
<script>
function validate(form, cb) {
$.getJSON('PHP/fb_check_user.php?username=' + form.username,
function(data){
$.each(data,function(name,error){
if (error === 'true')
{
cb({username: 'That username is taken'});
}
else
{
cb();
}
});
}
);
};
</script>
それを機能させるために、私はこの行を変更しなければなりませんでした:
$.getJSON('PHP/fb_check_user.php?username=' + form.username + '?callback=?',
に:
$.getJSON('PHP/fb_check_user.php?username=' + form.username,
サーバー側:(fb_check_user.php)
<?php
//Connect to database
$user=$_GET['username'];
$query = mysql_query("SELECT usr FROM members WHERE usr = '$user'");
if (!mysql_num_rows($query))
{
$result = array('error' => 'false');
}
else
{
$result = array('error' => 'true');
}
echo json_encode($result);
?>