2012-10-05 125 views
0

我試圖讓我的代碼在用戶名字段和密碼字段未填寫時顯示錯誤消息。當我使用If(isset)但是當我使用if(普通代碼)它似乎工作時它不起作用。任何幫助將不勝感激。Jquery + php的麻煩

下面是代碼:

的login.php

<?php 

if (isset($_POST['log_username']) && isset($_POST['log_password'])){ 

    $log_uname = preg_replace('#[^A-za-z0-9]', '', $_POST["log_username"]); 
    $log_password = preg_replace('#[^A-za-z0-9]#i', '', $_POST["log_password"]); 

    //get user from database 
    $sql = mysql_query("SELECT * FROM users WHERE username='$log_uname' AND password='$log_password' LIMIT 1"); 

    //check user existance 
    $userCount = mysql_num_rows($sql); 

    if ($userCount == 1) { 

     while($row = mysql_fetch_array($sql)){ 

      $id = $row["id"]; 

     } 
     $_SESSION['id'] = $id; 
     $_SESSION['log_username'] = $log_uname; 
     $_SESSION['log_password'] = $log_password; 


    }else{ 

     die (msg1(0, "Information Incorrect")); 

    } 

} 

function msg1($status1,$txt1){ 

    return '{"status1":'.$status1.',"txt1":"'.$txt1.'"}'; 

} 
?> 

login.js

$(document).ready(function(){ 

    $('.login_form').submit(function(e) { 

     login(); 
     e.preventDefault(); 

    }); 

    function login(){ 
    hideshow1('loading1',1); 
    error1(0); 

    $.ajax({ 

     type: "POST", 
     url: "php/login.php", 
     data: $('.login_form').serialize(), 
     dataType: "json", 
     success: function(msg1){ 
      if(parseInt(msg1.status1)==1){ 
       window.location=msg1.txt1; 
      } 
      else if (parseInt(msg1.status1)==0){ 

       error1(1,msg1.txt1); 

      } 
      hideshow1('loading1',0) 
     } 

    }); 
    } 

    function hideshow1(el,act){ 
     if(act) $('#'+el).css('visibility','visible'); 
     else $('#'+el).css('visibility','hidden'); 
    } 
    function error1(act,txt1){ 
     hideshow1('error1',act); 
     if(txt1) $('#error1').html(txt1); 
    } 

}); 

和最後的index.php

<?php include ("php/head.php");?> 
<div id="wrapper"> 

    <div id="container"> 

     <div id="intro"> 

      <h2><center>Are you a member? Login ...</center></h2> 
      <h3><center>And enjoy hundreds of services.</center></h3> 

      <div id="log_form"> 

       <form action="php/login.php" method="POST" class="login_form"> 

        <input type="text" size="25" name="log_username" id="login_txt" placeholder="Your Username"> 
        <input type="password" size="25" name="log_password" id="login_pass" placeholder="Your Password"> 
        <label id="check"><input type="checkbox" name="checkbox"> Remember Me</label> 
        <input type="submit" name="submit1" id="login_sub" value="LogIn"> 
        <img id="loading1" src="images/ajax-loader.gif" alt="working.." /> 

       <script> 


       $("#login_txt,#login_pass").click(function (e) { 

        e.preventDefault(); 

        $('#error1').fadeOut('fast', function() { 

          $(this).show(); 
          $(this).css("visibility","hidden");    
        }); 

       }); 

       </script> 

       </form> 

       <div id="error1"></div> 

      </div> 

      <div id="new_users"> 

       <h4 class="h4_users">New Users ...</h4> 

       <a href="#"><img src="#" width="55" height="55"></a> 
       <a href="#"><img src="#" width="55" height="55"></a> 
       <a href="#"><img src="#" width="55" height="55"></a> 
       <a href="#"><img src="#" width="55" height="55"></a> 

      </div> 

     </div> 

     <div id="register"> 

      <h2><center>Sign up Below ...</center></h2> 
      <h3><center>Easy, fast and free!</center></h3> 

       <form action="php/register.php" method="POST" name="form" class="form"> 
        <input type="text" size="25" name="fname" placeholder="First Name" id="fname" > 
        <input type="text" size="25" name="lname" placeholder="Last Name"> 
        <input type="text" size="25" name="username" placeholder="Username"> 
        <input type="text" size="25" name="email" placeholder="Email"> 
        <input type="text" size="25" name="email2" placeholder="Repeat Email"> 
        <input type="password" size="25" name="password" placeholder="Password"> 
        <input type="password" size="25" name="password2" placeholder="Repeat Password"> 
        <input type="submit" name="submit" id="sub" value="Sign Up!"> 
        <img id="loading" src="images/ajax-loader.gif" alt="working.." /> 
       </form> 

       <script> 

       $('#fname').click(function (e) { 

        e.preventDefault(); 

        $('#error').fadeOut('fast', function() { 

          $(this).show(); 
          $(this).css("visibility","hidden");    
        }); 

       }); 

       </script> 

      <div id="error"></div> 

     </div> 

    </div> 

    <?php include("php/footer.php");?> 

</div> 
</body> 
</html> 

回答

0

當提交表單,即使如此,密鑰仍將被髮送該值爲空 - 在這種情況下,$_POST['log_uname']是一個空字符串。

嘗試使用empty而不是isset

+0

仍然沒有工作我的朋友。 –

+0

我知道了..不得不包括(「connect.php」)和session_start();在login.php中。感謝您的迴應傢伙。 –

0
if (array_key_exists('submit1', $_POST)) { 
if (isset($_POST['log_username']) && isset($_POST['log_password'])){ 
//other codes 
} 
} 

試試這個,但你可以在你的形式轉變「submit1」,以更加良好的名稱這樣NAME =「login_in」

+0

沒有運氣的人。我不知道我做錯了什麼。 –

+0

更好地避免使用jquery,這會讓你迷惑,如果你只是一個初學者在php –

+0

我明白了......只有inlude(「connect.php」)和session_start();在login.php中。感謝您的迴應傢伙。 –