2011-03-18 50 views
0

我有一个简单的表格,以验证如果用户在db存在,并允许登录到另一页(是的,我删除密码验证来简化代码,并且我测试而不通和该脚本始终显示您的登录无效)。误差在登录 - PHP/AJAX

数据库:emprego,表:用户,字段:ID,用户名,电子邮件,通过

<script type="text/javascript" language="javascript"> 
$(document).ready(function() { 
    $("#login_form").submit(function() { 
     $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000); 
     $.post("ajax_login.php", { 
      name: $('#name').val(), 
     }, function (data) { 
      if (data == 'yes') { 
       $("#msgbox").fadeTo(200, 0.1, function() { 
        $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900, 1, function() { 
         document.location = 'secure.php'; 
        }); 
       }); 
      } else { 
       $("#msgbox").fadeTo(200, 0.1, function() { 
        $(this).html('Your login is not valid').addClass('messageboxerror').fadeTo(900, 1); 
       }); 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 
    </head> 
    <body> 
     <form method="post" action="" id="login_form"> 
        User Name : <input name="name" type="text" id="name"> 
       <div class="buttondiv"> 
        <input name="Submit" type="submit" id="submit" value="Login" style="margin-left:-10px; height:23px"> 
        <span id="msgbox" style="display:none"></span> 
       </div> 
     </form> 

文件:ajax_login.php

<?php 

include("includes/f_banco.php"); 
conecta(); 


$check = mysql_query("SELECT username FROM users WHERE username ='".mysql_real_escape_string($_POST['name'])."'")or die(mysql_error()); 
$row=mysql_fetch_array($check); 

if ($row['username'] == $_POST['name']) { 
    echo "yes"; 
    $_SESSION['name']=$row['username']; 
}else{echo "no";} 

?> 

编辑:更新的代码

是什么可能的原因?

+0

你为什么不使用'真'或'FALSE'? 'yes'和'no'只意味着你需要编写更多的代码。 – alex 2011-03-18 02:36:42

+0

好的,但问题不是这样,对吗?谢谢 – 2011-03-18 02:38:43

+0

问题是什么?问题是什么? – CallMeLaNN 2011-03-18 03:02:31

回答

1

我看到很多的问题

<?php 
//removed the # from the post 
$name = mysql_real_escape_string($_POST['name']); 
//whys this here? 
$row=mysql_fetch_array($check); 
//name cant be used (common mistake) 
$check = mysql_query("SELECT name FROM users WHERE name ='".$name."'")or die(mysql_error()); 
$check2 = mysql_num_rows($check); 
if ($check2 == 1) { 
    echo "yes"; 
    $_SESSION['name']=$name; 
} 

else 
echo "no"; 
?> 

尝试这样的事情

<?php 
session_start(); 
include("includes/f_banco.php"); 
conecta(); 

if(isset($_SESSION['name'])){echo "yes";}else{ 
    $check = mysql_query("SELECT username FROM users WHERE username ='".mysql_real_escape_string($_POST['name'])."' LIMIT 1")or die(mysql_error()); 
    $row=mysql_fetch_array($check); 

    if ($row['username'] == $_POST['name']) { 
     echo "yes"; 
     $_SESSION['name']=$row['username']; 
    }else{echo "no";} 
} 


?> 
+0

我只是复制你的代码,将bd中字段的名称更改为用户名,但我可以执行“登录”。这可能是JS中的一个问题? – 2011-03-18 03:06:38

+0

测试是否可以正常形态的PHP,你开始在session_start()在这两个ajax_login.php和表单页面的会议? – 2011-03-18 03:14:26

+0

此刻我的代码等于被更新的帖子,感谢劳伦斯 – 2011-03-18 03:16:34