こんにちは、登録フォームでメールアドレスを検証しようとしています。アドレスがデータベースに存在するかどうかを確認したい。
私は次の機能を持っています:
function validateEmailRepeat(){
// check if email exists in the database;
var emailVal = $('#email').val();
// assuming this is a input text field
$.post('check_email.php', {'email' : emailVal}, function(data) {
if(data==1)
{
email.addClass("error");
emailInfo.text("Adress exists");
emailInfo.addClass("error");
dataExist=1;
}
else {
email.removeClass("error");
emailInfo.text("Valid adress");
emailInfo.removeClass("error");
dataExist=0;
}
});
if(dataExist==1)
return false;
else
return true;
}
check_email.php は次のようになります。
require_once('db.php');
if (isset($_POST['email'])){
$email=mysqli_real_escape_string($con,$_POST['email']);
$sql = "SELECT * FROM users WHERE `username`='".$email."'";
$select=mysqli_query($con,$sql) or die("fail");
$row = mysqli_num_rows($select);
if ($row >0) {
echo 1;
}else echo 0 ;
}
else
echo "post error";
私はこれが初めてです。だから、タフにならないでください。前もって感謝します。
ル:すみません!質問を忘れてしまいました...問題は、var dataExist を関数フォーム $.post の外で定義すると、関数が true を返すことです。関数内にあるようにすると、「dataExist is not defined」エラーが発生し、 true を返します
Le: PHP は期待通りの 1 と 0 を返します..
LE: を定義しているようです
var dataExist=0;
関数の外でvalidateEmailRepeat()
問題を解決しました。
もっとエレガントな別の方法があれば教えてください。これは私には少しばかげているようです。