$checkemail = mysql_query("SELECT * FROM users WHERE email = '".$email."'");
Никогда никогда никогда делайте это. Это , требующий неприятностей : инъекция SQL, случайные ошибки (одинарная кавычка действительна в адресах электронной почты, кстати).
Есть параметризованных запросов , используйте их. Это всего лишь несколько строк кода, но это разница между недостатком безопасности, столь же широким, как дверь сарая, и безопасным взаимодействием с базой данных.
if(mysql_num_rows($checkemail) == 1)
{
$valid = 'false';
}
else
{
$valid = 'true';
}
это очень многословный способ сказать
$valid = mysql_num_rows($checkemail) == 1;
В соответствии с документацией, ответ удаленной проверки является JSON-кодированным логическим , а не JSON-кодированным строкой .
У вас есть "true"
или "false"
, которые станут "\"true\""
или "\"false\""
через json_encode()
, что неправильно. Фактические true
или false
станут "true"
или "false"
, что является правильным.
Установка типа содержимого ответа на JSON также может быть хорошей идеей:
header('Content-type: application/json');