У нас уже есть настроенный сайт членства в php / MySQL, и мы планируем интегрировать регистрацию и вход в Facebook. Форма входа и регистрации были импортированы и подключены к коду php / MySQL, который создает новых пользователей в базе данных. Однако для того, чтобы мы могли запретить одному пользователю несколько входов в систему (например, один вход на сайт, один вход в Facebook), нам нужно проверить адрес электронной почты пользователя перед добавлением новой строки в таблицу базы данных участников.
Мы можем сделать это с помощью кода php / MySQL, но это становится излишне сложным, когда вам приходится обслуживать все перестановки членства между сайтами / FB, плюс мы не хотим, чтобы пользователь подключался к приложению регистрации FB без стать участником сайта. Лучшим решением было бы запретить пользователю регистрироваться под адресом электронной почты, который уже присутствует в базе данных (вместо этого он должен был получить новый пароль и обновить соединение своего профиля facebook с существующим профилем). Мы искали решение в течение нескольких недель и проконсультировались с асинхронной проверкой разработчиков Facebook (http://developers.facebook.com/docs/plugins/registration/advanced/),, а также с форумом stackexchange), но не смогли реализовать решение, которое проверяет адрес электронной почты по базе данных и предотвращает / разрешить регистрацию соответственно.
Код, который у нас пока есть,
<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
//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);
К сожалению, этот процесс вообще не работает. Регистрационная форма просто висит бесконечно, не проверяя и не передавая информацию в базу данных. Мы провели серьезное исследование о том, как правильно кодировать getJSON и php на стороне сервера, но столкнулись с кирпичной стеной, поэтому будем очень признательны за любую помощь или совет по этому вопросу.