误差在登录 - PHP/AJAX
我有一个简单的表格,以验证如果用户在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";}
?>
编辑:更新的代码
是什么可能的原因?
我看到很多的问题
<?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";}
}
?>
我只是复制你的代码,将bd中字段的名称更改为用户名,但我可以执行“登录”。这可能是JS中的一个问题? – 2011-03-18 03:06:38
测试是否可以正常形态的PHP,你开始在session_start()在这两个ajax_login.php和表单页面的会议? – 2011-03-18 03:14:26
此刻我的代码等于被更新的帖子,感谢劳伦斯 – 2011-03-18 03:16:34
也许使用字段名“名”呢?见jQuery issue with live click and input named "name"
不,我更改为name1,我无法登录,令人难以置信的是这个问题。谢谢 – 2011-03-18 02:51:18
你为什么不使用'真'或'FALSE'? 'yes'和'no'只意味着你需要编写更多的代码。 – alex 2011-03-18 02:36:42
好的,但问题不是这样,对吗?谢谢 – 2011-03-18 02:38:43
问题是什么?问题是什么? – CallMeLaNN 2011-03-18 03:02:31