2017-02-25 5 views
-1

Maintenant, cela peut sembler compliqué mais j'ai une page appelée activation.php où après que l'utilisateur s'est enregistré en utilisant ma page reg.php, ils reçoivent un email avec leur lien d'activation - activation.php puis une méthode get de k faire activation.php?k=activation-code-hereAJAX - Activation utilisateur complexe pour la connexion

Je l'ai fait ainsi il retourne l'état de l'activation, par exemple - le succès de l'erreur.

Sur ma page reg.php, je veux faire en sorte qu'il utilise ajax pour ouvrir une popup sweetAlert en disant 'Activation Success'. Il obtiendra le popup suivant si les utilisateurs 'activ_status' ont changé de 0 à 1 dans la base de données quand ils accèdent à la page activation.php avec une clé d'activation correcte.

Voici mon code:

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> 

Ma page 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 } ?> 

J'ai trouvé un morceau de code qui pourrait m'aider. Il ne semble pas charger le modal jusqu'à bien:

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

Répondre

0

S'il vous plaît expliquer clairement le problème que vous rencontrez qui empêche le code de travail que vous avez l'intention.

Si mon interprétation est correcte, vous voulez mettre à jour la page d'inscription que l'utilisateur garde ouverte tout en l'activant dans une autre fenêtre, puis refléter le changement sur la page d'enregistrement en utilisant AJAX. En fait, dans ce cas vous voulez envoyer des données du serveur à votre client (vous voulez que quelque chose change quand un changement se produit sur le serveur dans la base de données). Dans ce cas, une solution simple consiste à demander plusieurs fois le statut (par exemple toutes les 2 secondes) en utilisant setTimeout. D'autres solutions existent, mais sont probablement exagérées, telles que les longues interrogations ou les sockets Web.

+0

Ok je vais essayer mais je n'ai pas de code. Alors, que pourrais-je/devrais-je mettre en place? –