javascript - 如何通过php显示用户已经在html中注册的消息?

标签 javascript php jquery html css

我有一个 HTML 表单,用户可以在其中输入他/她的电子邮件 ID 进行注册,一切正常,它会检查有效的电子邮件 ID 并注册电子邮件 ID!但是当我应用新代码来检查用户是否已经注册时,它不起作用!

下面是我的Html页面

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Sign Up - MOBTRICKS</title>
  <!-- CSS -->
  <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Lobster">
  <link rel='stylesheet' href='http://fonts.googleapis.com/css?family=Lato:400,700'>
  <link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
  <link rel="stylesheet" href="assets/font-awesome/css/font-awesome.min.css">
  <link rel="stylesheet" href="assets/css/style.css">

  <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
        <![endif]-->

  <!-- Favicon and touch icons -->
  <link rel="shortcut icon" href="assets/ico/fa.png">
  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
  <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
  <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
  <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">

  <!--  <script type="text/javascript">
            function greeting(){
                alert("Welcome ! Your Email : " + document.forms["form"]["email"].value + " has been registered under our records successfully !")
            }
        </script>   -->

</head>

<body>

  <!-- Header -->
  <div class="container">
    <div class="row header">
      <div class="col-sm-4 logo">
        <h1><a href=#>PQR</a> <span>.</span></h1>
      </div>
      <div class="col-sm-8 call-us">
        <p>Mob: <span>+91-9530803237</span> | email: <span>ab.creations27@gmail.com</span>
        </p>
      </div>
    </div>
  </div>

  <!-- Coming Soon -->
  <div class="coming-soon">
    <div class="inner-bg">
      <div class="container">
        <div class="row">
          <div class="col-sm-12">

            <center>
              <i class="fa fa-cog fa-spin fa-3x fa-fw"></i>
              <span class="sr-only">Loading...</span>

              <h2>We're Coming Soon</h2>
              <p>We are working very hard on the new version of our site. It will bring a lot of new features. Stay tuned!</p>
              <div class="timer">
                <div class="days-wrapper">
                  <span class="days"></span> 
                  <br>days
                </div>
                <div class="hours-wrapper">
                  <span class="hours"></span> 
                  <br>hours
                </div>
                <div class="minutes-wrapper">
                  <span class="minutes"></span> 
                  <br>minutes
                </div>
                <div class="seconds-wrapper">
                  <span class="seconds"></span> 
                  <br>seconds
                </div>
              </div>
          </div>
        </div>
      </div>
    </div>
  </div>

  <!-- Content -->
  <div class="container">
    <div class="row">
      <div class="col-sm-12 subscribe">
        <h3>Subscribe to our newsletter !!</h3>
        <p>Sign up now to our newsletter and you'll be one of the first to know when the site is ready:</p>

        <form class="form-inline" role="form" action="assets/subscribe.php" method="post">
          <div class="form-group">
            <label class="sr-only" for="subscribe-email">Email address</label>
            <input type="text" name="email" placeholder="Enter your email..." class="subscribe-email form-control" id="subscribe-email">
          </div>
          <button type="submit" class="btn">Subscribe</button>
        </form>

        ***
        <div class="success-message"></div>
        <div class="error-message"></div>***
      </div>
    </div>
    <div class="row">
      <div class="col-sm-12 social">
        <a href="https://www.facebook.com/ashuart001/" data-toggle="tooltip" data-placement="top" title="Facebook"><i class="fa fa-facebook"></i></a>
        <a href="#" data-toggle="tooltip" data-placement="top" title="Twitter"><i class="fa fa-twitter"></i></a>

        <a href="https://github.com/ashu271994" data-toggle="tooltip" data-placement="top" title="GitHub">
          <i class="fa fa-github"></i>
        </a>

        <a href="https://plus.google.com/+AshishBharwal" data-toggle="tooltip" data-placement="top" title="Google Plus"><i class="fa fa-google-plus"></i></a>
        <a href="https://in.pinterest.com/ashishbharwal/" data-toggle="tooltip" data-placement="top" title="Pinterest"><i class="fa fa-pinterest"></i></a>

        <a href="mailto:ab.creations27@gmail.com?subject=MOBTRICKS-Signup &body=Please send your query with valid details!" data-toggle="tooltip" data-placement="top" title="EMAIL"><i class="fa fa-envelope-o"></i></a>
      </div>
    </div>
  </div>

  <!-- Footer -->
  <footer id="footer">

    <ul class="copyright">
      <li>&copy; <a href="https://www.facebook.com/ASHISHBHARWAL001">ASHISH BHARWAL</a>
      </li>
      <li>Credits: <a href="https://www.facebook.com/ashuart001/">AB-Creations</a>
      </li>
    </ul>
  </footer>

  <!-- Javascript -->
  <script src="assets/js/jquery-1.11.1.min.js"></script>
  <script src="assets/bootstrap/js/bootstrap.min.js"></script>
  ipt src="assets/js/jquery.backstretch.min.js"></script>
  <script src="assets/js/jquery.countdown.min.js"></script>
  <script src="assets/js/scripts.js"></script>

  <!--[if lt IE 10]>
            <script src="assets/js/placeholder.js"></script>
        <![endif]-->

</body>

</html>

下面是我的 Subscriber.php 页面

<?php

// Email address verification

function isEmail($email)
{
    return (preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]| [[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i", $email));
}

if ($_POST) {

    // Enter the email where you want to receive the notification when someone subscribes
    $emailTo = 'ab.creations27@gmail.com';

    $subscriber_email = addslashes(trim($_POST['email']));

    if (!isEmail($subscriber_email)) {
        $array            = array();
        $array['valid']   = 0;
        $array['message'] = 'Insert a valid email address!';
        echo json_encode($array);
        //   $msg="wrong answer";
        //   echo "<script type='text/javascript'>alert('$msg');</script>";
    } else {
        $host = "somehostname";
        $user = "username";
        $pwd  = "password";
        $db   = "demo1";

        $conn = new PDO("mysql:host=$host;dbname=$db", $user, $pwd);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        try {
            $sql_insert = "SELECT * FROM demotable WHERE subs='$subscriber_email'";
            $stmt1      = $conn->prepare($sql_insert);

            $stmt1->execute();
            $result = $stmt1->fetchColumn();

            if ($result == 0) {
                $sql_insert = "INSERT INTO demotable (subs) 
                                       VALUES ('$subscriber_email')";
                $stmt       = $conn->prepare($sql_insert);

                $stmt->execute();

                $array            = array();
                $array['valid']   = 1;
                $array['message'] = "Your Email : $subscriber_email has been registered with us ! Thanks for your subscription!";
                echo json_encode($array);
            } else {
                $array            = array();
                $array['valid']   = 2;
                $array['message'] = "You are already registered !!";
                echo json_encode($array);
            }

        }
        catch (Exception $e) {
            die(var_dump($e));
        }
    }
}

?>

现在,当我尝试添加一个无效的电子邮件 ID 时发生了什么,然后它在 HTML 页面中标记为无效的电子邮件 ID,但是当我添加一个新用户时,然后将数据添加到我的表中并显示消息,但在用户的情况下谁已经注册了它没有显示任何消息!我还尝试制作具有 "echo json_encode($array)" 的新函数;但这也行不通!告诉我我错过了什么或我的错误是什么!我正在尝试从过去 3 天开始对它进行排序!!

下面是我的 scripts.js 代码

    $('.subscribe form').submit(function(e) {
    e.preventDefault();
    var postdata = $('.subscribe form').serialize();
    $.ajax({
        type: 'POST',
        url: 'assets/subscribe.php',
        data: postdata,
        dataType: 'json',
        success: function(json) {
            if(json.valid == 0) {
                $('.success-message').hide();
                $('.error-message').hide();
                $('.error-message').html(json.message);
                $('.error-message').fadeIn();
            }
            else if (json.valid == 1){
                $('.error-message').hide();
                $('.success-message').hide();
                $('.subscribe form').hide();
                $('.success-message').html(json.message);
                $('.success-message').fadeIn();
            }
             else {
                $('.error-message').hide().empty();
                $('.success-message').hide().empty();
                $('.subscribe form').hide();
                $('.success-message').html(json.message);
                $('.success-message').fadeIn();
            }
        }
    });
});

最佳答案

尝试改变

$result = $stmt1->fetchColumn();

$result = $stmt1->num_rows;

看看是否可行。

关于javascript - 如何通过php显示用户已经在html中注册的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376745/

相关文章:

javascript - 在 cordova windows 应用程序中使用触摸事件

php - 如何在使用 UNION 时删除重复记录

jquery - 悬停时从底部到顶部动画移动 div

php - 使用 mysqli 将表单 $_POST 数组插入 MySQL 数据库

php - MySQL 使用 Substring 和 Like 仅连接部分字段

jquery - 使用 jQuery 进行操作后保持合理的内联 block 元素的合理性

jquery - Chrome扩展程序webrequest网络xhr异常

javascript - 三个 js。单击另一个纹理/图像更改纹理负载

javascript - 自定义输入 - Redux 表单

javascript - 为什么这个表单不会调用JS函数? (尝试使用 PHP 脚本和 AJAX 获取调用 MySQL 数据库的自动完成表单字段)