2016-03-22 2 views
-2

hy! Я пытаюсь запустить jquery shake и скрыть эффект. Я просто создаю форму входа, состоящую из 2 полей. Я установил условие, что если пользователь войдет в систему с неправильным именем пользователя и паролем, он будет дрожать или отскочить влево, иначе он отобразит страницу home.php с эффектом «Скрыть» и «Показать». Но всякий раз, когда я пытался войти в систему с истинным или неправильным именем пользователя и паролем, он не отскакивает. Он всегда дает эффект скрытия и шоу. Пожалуйста, смотрите мой код, почему он так себя ведет.код показывает непредвиденное поведение

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

на основе правил, кажется, речь идет от ** вне темы ** область «[* Вопросы, требующие помощи для отладки (« почему этот код не работает? ») *] (Http://stackoverflow.com/help/on-topic)" – Farside

+0

@Farside Я так смущен, поэтому я отправил вопрос, что я понимаю. –

ответ

0

В вашем success обратного вызова, параметр данных является строка, верно? Почему вы проверяете, является ли это ложью? Если он содержит какие-либо пробелы, которые он, вероятно, делает, даже если пользователь не входит в систему успешно, он будет эквивалентен true, а не false.

0

Вам нужно вернуть из login.php оба значения = true или false. Потому что вы всегда получаете некоторые данные в своем var.

login.php

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

А в JS код на событие успеха вы проверяете:

success:function(data){ 
    if(data=='false'){ 
    // somethings wrong 
    } else { 
    // welcome 
    } 
} 
Смежные вопросы