2016-03-22 3 views
-2

hy! jquery shakeとhideエフェクトを実行しようとしています。 私は単純に2つのフィールドで構成されるログインフォームを作成します。 ユーザーが間違ったユーザー名とパスワードでログインすると、左に向かって揺れたり跳ね返ったりする。そうでなければ、hideとshowの効果を持つhome.phpページが表示される。 しかし、本当に間違ったユーザー名とパスワードでログインしようとすると、バウンスしません。それは常に非表示と表示効果を与えます。 私のコードを見てください。なぜこのように動作していますか?あなたのsuccessコールバックでコードは予期しない動作を示します

の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

、データパラメータは右、文字列のですか?なぜそれが偽であるかをチェックしていますか?それに空白が含まれていると、ユーザーが正常にログインしなくてもおそらく実行されますが、falseではなくtrueと同じになります。

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 
    } 
} 
関連する問題