2012-10-05 124 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中。感谢您的回应家伙。 –