2017-02-25 36 views
-1

現在,這可能聽起來很複雜,但我有一個名爲activation.php頁面,用戶使用我reg.php頁面註冊後,他們收到一封電子郵件與他們的激活鏈接 - activation.php則k的get方法使activation.php?k=activation-code-hereAJAX - 複雜的用戶激活的登錄

我做到了,所以它返回激活的狀態,例如 - 錯誤的成功。

在我的reg.php頁面上,我想讓它使用ajax打開一個sweetAlert彈出窗口,說'Activation Success'。它會根據用戶'activ_status'是否從0更改爲數據庫中的1而得到彈出窗口,當他們使用正確的激活密鑰訪問activation.php頁面時。

這裏是我的代碼:

Activation.php

<?php 

    include('inc/conf/db_.php'); 

    $result = ''; 

    if(empty($_GET['k']) || (!$_GET['k'])) 
    { 
     header('Location: login.php'); 
     exit(); 
     $result = 'Hacker Tried Accessing Auth Page'; 
    } 

    $key = mysqli_real_escape_string($con,$_GET["k"]); 
?> 

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

<?php 

if (!empty($key)) 
{ 

    $query = "SELECT * FROM users WHERE activ_key = '$key'"; 
    $result = mysqli_query($con,$query) or die('error'); 
     if (mysqli_num_rows($result)) 
     { 
      $row  = mysqli_fetch_array($result); 
      if ($row['activ_status']!='1') 
      { 
       $query  = "update users set activ_status='1' where activ_key='$key'"; 
       $result = mysqli_query($con,$query) or die('error'); 
       $result = 'Successfuly Activated, Return To Your Other Page.'; 
      } 
      else 
      { 
       $result = "Account Already Activated"; 
      } 

     } 
     else 
     { 
      $result = 'Invalid Access Token'; 
     } 
} 
else 
{ 
    $result = 'Error'; 
} 

?> 

    <?php include('inc/login_header.php'); ?> 

     <div class="accountbg"></div> 
     <div class="wrapper-page"> 
     <div class="panel panel-color panel-primary panel-pages"> 
      <div class="panel-body"> 

      <br> 
      <center><div id="result"></center> 
      <br> 

       <h3 class="text-center m-t-0 m-b-30"> <span class=""><?php echo site_settings('site_name'); ?></h3> 
       <h4 class="text-muted text-center m-t-0"><b>Activation Status</b></h4> 

       <br> 

       <center><img src="assets/images/loading.gif"></center> 

       <br> 
       <center><div class="alert alert-info"><button type="button" class="close"></button><?php echo $result; ?></div></center> 
       <?php return $result; ?> 

</body> 
</html> 

我reg.php頁

<?php 

    include('inc/conf/db_.php'); 

    if (session_status() == PHP_SESSION_ACTIVE) { 
     session_start(); 
    } 

    if(isset($_SESSION['user_i']) || isset($_SESSION['login'])) { 
     header('Location: index.php'); 
     exit(); 
    } 

    else if (session_status() == PHP_SESSION_NONE) { 

?> 

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

    <link href="assets/plugins/bootstrap-sweetalert/sweet-alert.css" rel="stylesheet" type="text/css"> 


    <?php include('inc/login_header.php'); ?> 


     <div class="accountbg"></div> 
     <div class="wrapper-page"> 
     <div class="panel panel-color panel-primary panel-pages"> 
      <div class="panel-body"> 

       <center><img src="assets/images/loading.gif" id="loading-image" style="display:none"/></center> 

       <h3 class="text-center m-t-0 m-b-30"> <span class=""><?php echo site_settings('site_name'); ?></h3> 
       <h4 class="text-muted text-center m-t-0"><b>Sign Up</b></h4> 


       <form id="registered_form" class="form-horizontal m-t-20"> 


        <div class="form-group has-feedback"> 
        <div class="col-xs-12"> <input class="form-control" name="email" type="email" required="" placeholder="Email"></div> 
        <span class="fa fa-envelope form-control-feedback text-muted" style="margin-top: 3%;"></span> 
        </div> 

        <div class="form-group has-feedback"> 
        <div class="col-xs-12"> <input class="form-control" name="username" type="text" required="" placeholder="Username"></div> 
        <span class="fa fa-user form-control-feedback text-muted" style="margin-top: 3%;"></span> 
        </div> 

        <div class="form-group has-feedback"> 
        <div class="col-xs-12"> <input class="form-control" name="password" type="password" required="" placeholder="Password"></div> 
        <span class="fa fa-lock form-control-feedback text-muted" style="margin-top: 3%;"></span> 
        </div> 

          <div class="form-group"> 
          <div class="g-recaptcha" data-sitekey="6LeGFxYUAAAAAOqjyovTS3H0D1HS4IBgoHMvG4y_"></div> 
          </div> 

        <div class="form-group"> 
        <div class="col-xs-12"> 
         <div class="checkbox checkbox-primary" style="text-align: center;"> <input type="checkbox" name="checkbox" value="agree"> <label for="checkbox-signup"> I accept <a href="#">Terms and Conditions</a> </label></div> 
        </div> 
        </div> 

        <div class="form-group text-center m-t-20"> 
        <div class="col-xs-12"> <button class="btn btn-primary w-md waves-effect waves-light" type="submit" id="reg_button" style="width: 100%;" >Register</button></div> 
        </div> 

        <div class="form-group m-t-30 m-b-0"> 
        <div class="col-sm-12 text-center"> <a href="login.php" class="text-muted">Already have an account?</a></div> 
        </div> 


       </form> 

      </div> 
     </div> 
     </div> 

<script src="assets/js/jquery.js"></script> 
<script src="assets/js/bootstrap.min.js"></script> 
<script type="text/javascript" src="assets/js/jquery.validate.js"></script> 
<script src="assets/plugins/bootstrap-sweetalert/sweet-alert.min.js"></script> 

<script> 

    $(document).ready(function() 
    { 

    jQuery.validator.addMethod("noSpace", function(value, element) 
    { 
     return value.indexOf(" ") < 0 && value != ""; 
    }, "Spaces are not allowed"); 

      $("#registered_form").submit(function() 
      { 
       if ($("#registered_form").valid()) 
       { 

        $('#loading-image').show(); 

        var data1 = $('#registered_form').serialize(); 

        $.ajax({ 
         type: "POST", 
         url: "inc/pgs/register.php", 
         data: data1, 
         success: function(msg) 
         { 
          $('#loading-image').hide(); 

          console.log(msg); 
          if(msg == '') 
          { 
           swal({ 
           title: "Registration Success!", 
           text: "Your registration was successful! Check your email and click on your activation link to be able to access your account. NOTE: Keep this page open", 
           type: "success", 
           timer: 15000, 
           showConfirmButton: false 
           }); 
          } 
          else 
          { 
           swal("Registration Error!", msg, "error"); 
          } 
         } 
        }); 

        $.ajax({ 
         type: "GET", 
         url: "activation.php", 
         data: data1, 
         success: function(msg) 
         { 
          if(msg == 'Successfuly Activated, Return To Your Other Page.') 
          { 
           swal({ 
           title: "Activation Success", 
           text: "You can now login!", 
           type: "success", 
           timer: 15000, 
           showConfirmButton: false 
           }); 
          } 
         } 
        }); 


       } 
       return false; 
      }); 
     }); 
    </script> 


    </body> 
</html> 

<?php } ?> 

我發現了一段可能對我有幫助的代碼。它似乎並沒有被加載模式雖則:

     $.ajax({ 
           url: 'activation.php', 
           type: 'GET', 
           dataType: 'jsonp', 
           cache: 'false', 
           timeout: 32000, 
           success: function(data) { 
           if(data == 'Successfuly Activated, Return To Your Other Page.') 
           { 
            swal("Activation Completed!", "You can now login using the link at the bottom of the page - Already have an account?", "success") 
           } 
           }, 
           error: function(jqXHR, textStatus, errorThrown) { 
            console.log("Error[refresh]: " + textStatus); 
            console.log(jqXHR); 
            ajaxCall(); 
           }, 
          }); 

回答

0

請解釋清楚,你有被阻止的代碼工作作爲你想讓你的問題。

如果我的解釋是正確的,您希望更新用戶在另一個窗口中激活時保持打開的註冊頁面,然後使用AJAX在註冊頁面上反映更改。實際上,在這種情況下,您希望將數據從服務器發送到客戶端(當數據庫中的服務器發生更改時,您希望更改某些內容)。在這種情況下,一個簡單的解決方案是使用setTimeout重複請求狀態(例如每2秒)。其他解決方案存在,但可能是矯枉過正,如長輪詢或網絡套接字。

+0

好吧,我會嘗試,但我沒有任何代碼。那麼我可以/應該採取什麼措施? –