查询阻止来自php

时间:2017-01-05 23:32:27

标签: javascript php jquery

如果用户收到数据库中存在电子邮件的消息,我试图停止或禁用提交按钮。

我曾经尝试过,但没有运气。 jquery上没有大师。

有人说我应该使用e.preventDefault();但是我把它放在哪里?到处尝试,但要么脚本不起作用,要么用户无论如何都可以注册。

也许最好从php验证一切?只是认为使用validate插件时jQuery更好。

有任何线索吗?谢谢=)

有这个脚本:

Jquery的:

    $("#email").keyup(function (e){
    clearTimeout(x_timer);
    var e_mail = $(this).val();
            if (e_mail.length > 4) {
        x_timer = setTimeout(function(){
            check_email_ajax(e_mail);
        }, 1000);
    }
}); 

    function check_email_ajax(e_mail){
        $("#email-result").html('<img src="../cms/assets/images/loading.gif" width="20px" height="20px" />');
        $.post('ajax/register.ajax.php', {'email':e_mail}, function(data) {
          $("#email-result").html(data);
        });
    }

PHP:

    if(isset($_POST["email"])) {

        if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND     strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
        die();
    }

$email = filter_var($_POST["email"], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);

$statement = $link->prepare("SELECT email FROM FF_Users WHERE email=?");
$statement->bind_param('s', $email);
$statement->execute();
$statement->bind_result($email);
if($statement->fetch()){
    die('<i class="fa fa-times-circle" style="color:red;" aria-hidden="true"></i> <small>(taken)</small>');
}else{
    die('<i class="fa fa-check" style="color:green;" aria-hidden="true"></i> <small>(Yeey :-) )</small>');
}}

2 个答案:

答案 0 :(得分:0)

您可以使用button type="button"完美地使用白名单提交按钮。我想你正在寻找这样的东西:

function check_email_ajax(e_mail){
        $("#email-result").html('<img src="../cms/assets/images/loading.gif" width="20px" height="20px" />');
        $.post('ajax/register.ajax.php', {'email':e_mail}, function(data) {
          $("#email-result").html(data);
          var result= $("i").attr("id")
          if (result==red){
             //If this is the result you stay on the page and user see the red message :)
          }
          if (result==green){
            //If result is green I imagine you want to go where the action in form tag says, so delete action from the form, you can simply redirect where you want:
            url = "your-file.php"
            $(location).attr("href", url)
          }
        });
    }

为图标添加id:

if($statement->fetch()){
    die('<i class="fa fa-times-circle" id="red" style="color:red;" aria-hidden="true"></i> <small>(taken)</small>');
}else{
    die('<i class="fa fa-check" id ="green" style="color:green;" aria-hidden="true"></i> <small>(Yeey :-) )</small>');
}}

希望它对你有所帮助。

答案 1 :(得分:0)

不确定这是否是最佳解决方案,但它可以正常工作。

<input id="submit" type="submit" value="Submit">

如果找到电子邮件:

echo '<script> $(document).ready(function() { $("#submit").attr("disabled", "disabled"); }); </script>';

如果找不到电子邮件:

echo '<script> $(document).ready(function() { $("#submit").removeAttr("disabled"); }); </script>'; 

它有效: - )