2016-09-07 6 views
0

私は、ユーザーが有効な電子メールIDをチェックし、電子メールIDを登録して、すべてがうまくいっていることを登録するために、自分の電子メールIDを入力するHTMLフォームを持っています!しかし、ユーザーが既に登録されているかどうかを確認するために新しいコードを適用したときに、それはうまくいかなかった!!以下は ユーザーがすでにhtmlに登録されているというメッセージをPHPで表示するには?

は、今私は、無効な電子メールIDを追加しようとしたときに何が起こっているのか、それが無効な電子メールIDを示し、私のSubscriber.phpページ

<?php 

// Email address verification 

function isEmail($email) 
{ 
    return (preg_match("/^[-_.[:alnum:]][email protected]((([[: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 = '[email protected]'; 

    $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)); 
     } 
    } 
} 

?> 

私の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>[email protected]</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:[email protected]?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> 

されていますHTMLページにマークされていますが、新しいユーザーを追加したときにデータをテーブルに追加してメッセージを表示しますが、既に登録されているユーザーの場合はメッセージを表示しませんでした。 "echo json_encode($ array)"という新しい関数を作成しようとしました。しかし、これも動作しません!何が欠けているのか、私の間違いは何かを教えてください!!私は最後の3日間からそれを並べ替えることを試みている!!

$('.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(); 
      } 
     } 
    }); 
}); 
+0

あなたは、動作していたものと動作しなかったものの間で何が変わったのかを知る必要があります。いつもコピーを使って作業していましたので、これまで使用していたものに戻すことができます。 –

+0

なぜPDOとMySQLi_ APIの両方を使用していますか? –

+0

@ Fred私はPDO APIを使用していましたが、それも動作しませんでした! &yes私はこの部分を書くとき、私と一緒に保存された部分を持っています。 "$ array ['message'] =" message ";$ array ['valid'] = 1; ; echo json_encode($ array); "外側にあるif - else部分、つまり外側の内側にある場合は、両方が表示されますが、if-else内にはありません!!あなたは何を言おうとしているのですか? –

答えて

0

最終的には動作しました。エラーはシンプルでしたが、見つけにくいものでした。 LOLZ

$sql_insert = "SELECT * FROM demotable WHERE subs='$subscriber_email'"; 

** $sql_insert = "SELECT COUNT(*) FROM demotable WHERE subs='$subscriber_email'";** 

ようにする必要がありご意見ありがとうございました。 :)

1

以下の私のscripts.jsコードは、それが動作するかどうかを確認

$result = $stmt1->num_rows; 

$result = $stmt1->fetchColumn(); 

を変更してみてください。

+0

いいえこの場合、dbに新しいユーザーを追加しましたが、新しいユーザーと古いユーザーの両方にメッセージを返信しませんでした。つまり、再び「SUBSCRIBE」ボタンがフリーズします。助けてくれてありがとう 。 –

+0

'SELECT'コマンドを満たすユーザがある場合、そのクエリの行を返します。 num_rowsは返される行数です。それがゼロの場合、ユーザーは存在しません。 SQLクエリが正しいかどうかを確認してください。phpmyadminまたはテストファイルで実行し、行またはエラー番号を出力することができます。それはあなたを助けるはずです。 – AtulBhatS

関連する問題