2016-03-22 22 views
-2

hy! Ich versuche, einen Jquery Shake und Hide-Effekt auszuführen. Ich erstelle einfach ein Login-Formular bestehend aus 2 Feldern. Ich setze Bedingung, dass, wenn sich Benutzer mit falschem Benutzernamen und Kennwort einloggen, es nach links schütteln oder springen wird, andernfalls zeigt es eine home.php Seite mit Verstecken und Erscheineneffekt an. Aber immer, wenn ich versuchte, mich mit richtigem oder falschem Benutzernamen und Passwort anzumelden, springt es nicht. Es gibt immer einen versteckten Effekt. Bitte beachten Sie meinen Code, warum er sich so verhält.Code zeigt unerwartetes Verhalten

index.php

<?php 
session_start(); 
print_r($_SESSION); 
if(isset($_SESSION["username"])) 
{ 
     header("location:home.php"); 
} 
?> 
<html> 
     <head> 
      <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
      <meta charset="utf-8"> 
      <title>Webslesson Tutorial</title> 
      <script src="http://code.jquery.com/jquery-2.1.1.js"></script> 
      <script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script> 
      <script src="js/bootstrap.js"></script> 
      <link href="css/bootstrap.css" rel="stylesheet" /> 
      <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script> 
      <style> 
      #box 
      { 
       width:100%; 
       max-width:500px; 
       border:1px solid #ccc; 
       border-radius:5px; 
       margin:0 auto; 
       padding:0 20px; 
       box-sizing:border-box; 
       height:270px; 
      } 
      </style> 
     </head> 
     <body> 
      <div class="container"> 
       <h2 align="center">How to Use Ajax with PHP for Login with Shake Effect</h2><br /><br /> 
       <div id="box"> 
        <br /> 
        <form method="post"> 
          <div class="form-group"> 
           <label>Username</label> 
           <input type="text" name="username" id="username" class="form-control" /> 
          </div> 
          <div class="form-group"> 
           <label>Password</label> 
           <input type="password" name="password" id="password" class="form-control" /> 
          </div> 
          <div class="form-group"> 
           <input type="button" name="login" id="login" class="btn btn-success" value="Login" /> 
          </div> 
          <div id="error"></div> 
        </form> 
        <br /> 
       </div> 
      </div> 
     </body> 
</html> 
<script> 
$(document).ready(function(){ 
     $('#login').click(function(){ 
      var username = $('#username').val(); 
      var password = $('#password').val(); 
      if($.trim(username).length > 0 && $.trim(password).length > 0) 
      { 
       $.ajax({ 
        url:"login.php", 
        method:"POST", 
        data:{username:username, password:password}, 
        cache: false, 
        beforeSend:function() 
        { 
          $('#login').val("connecting..."); 
        }, 
        success:function(data) 
        { 
          if(data) 
          { 
           $("body").load("home.php").hide().fadeIn(1500); 
          } 
          else 
          { 
           //shake animation effect. 
           var options = { 
            distance: '40', 
            direction:'left', 
            times:'3' 
           } 
           $("#box").effect("shake", options, 800); 
           $('#login').val("Login"); 
           $('#error').html("<span class='text-danger'>Invalid username or Password</span>"); 
          } 
        } 
       }); 
      } 
      else 
      { 
       return false; 
      } 
     }); 
}); 
</script> 

login.php

<?php 
session_start(); 
include_once './include/db_connection.php'; 
if(isset($_POST["username"]) && isset($_POST["password"])) 
{ 
     $username = mysqli_real_escape_string($link, $_POST["username"]); 
     $password = md5(mysqli_real_escape_string($link, $_POST["password"])); 
     $sql = "SELECT * FROM signup WHERE username = '".$username."' AND password = '".$password."'"; 
     $result = mysqli_query($link, $sql); 
     $num_row = mysqli_num_rows($result); 
     if($num_row > 0) 
     { 
      $data = mysqli_fetch_array($result); 
      $_SESSION["username"] = $data["username"]; 
      echo $data["username"]; 
     } 
} 
?> 

home.php

<?php 
session_start(); 
if(!isset($_SESSION["username"])) 
{ 
     header("location: index.php"); 
} 
echo '<h1 align="center">'.$_SESSION["username"].' - Welcome to Home Page</h1>'; 
echo '<p align="center"><a href="logout.php">Logout</a></p>'; 
?> 
+0

Auf der Grundlage der Regeln, wie es scheint die Frage der ist ** Wegthema ** Bereich "[* Fragen, die Debugging-Hilfe suchen (" Warum funktioniert dieser Code nicht? ") *] (Http://stackoverflow.com/help/on-topic)" – Farside

+0

@Farside Ich bin so verwirrt, deshalb habe ich gepostet die Frage, was ich verstehe. –

Antwort

0

In Ihrem success Rückruf, die Datenparameter eine Zeichenfolge ist, nicht wahr? Warum überprüfen Sie, ob es falsch ist? Wenn es Whitespace enthält, was es wahrscheinlich auch tut, wenn sich der Benutzer nicht erfolgreich anmeldet, wird es dem Wert "True" entsprechen und nicht "False".

0

Sie müssen von login.php zurückkehren beide Werte = wahr oder falsch. Denn du bekommst immer Daten in deiner Var.

login.php

if(isset($_POST["username"]) && isset($_POST["password"])){ 
    echo 'true'; // you send here $data["username"]; 
} else { 
    echo 'false'; 
} 

Und in js Code auf Erfolgsereignis Sie überprüfen:

success:function(data){ 
    if(data=='false'){ 
    // somethings wrong 
    } else { 
    // welcome 
    } 
}