我的index.php页面包含登录表单(用户名,密码)和login.php这部分代码:
<? if(!$_POST['username'] || !$_POST['password']){
$data['msg'] = 'All fields have to be filled!';
$data['success'] = false;}else{
mysql_query(" INSERT INTO log_access(user,ip,datetime)
VALUES(
'".$_POST['username']."',
'".$_SERVER['REMOTE_ADDR']."',
NOW()
)");
$row = mysql_fetch_assoc(mysql_query("SELECT id,login FROM users WHERE login='".$username."' AND pwd='".md5($password)."'"));
if($row['login'])
{
$_SESSION['login'] = $row['login'];
$_SESSION['id'] = $row['id'];
$data['success'] = true;
$data['redirect'] = "index.php";
}
else
{
$data['success'] = false;
$data['msg']='Wrong username or password!';
}}echo json_encode($data);?>
如果我在用户名或/和密码中发送空字段,login.php将返回$ data。但是如果我发送填充字段,则没有数据返回index.php。 我在index.php中有以下内容:
<script>
$(document).ready(function()
{
$('#frmLogin').submit(function()
{
$.post('/scripts/login.php',{username: $('[name=username]').val(), password: $('[name=password]').val()}, function(data)
{
if(data.success)
{
$('#login-msg').html("Logged");
}
else
{
$('#login-msg').html(data.msg);
}
}
,'json');
return false;
});
});
</script>
如果我在第一个条件或之前(在login.php中)放置任何内容,我会遇到同样的问题。 我不知道,我做错了什么:(
感谢您的帮助! 挖砂
修改 解决了! 我从登录脚本与DB连接不良。初学者错了。感谢所有回复。
答案 0 :(得分:2)
您可以查看Firebug的控制台,看看POST是否发生,响应代码是200吗?您还可以检查正在检索的响应。
尝试使用以下内容调用test.php:
<?
if(!$_POST['username'] || !$_POST['password']){
$data['msg'] = 'All fields have to be filled!';
$data['success'] = false;
}else{
$data['success'] = true;
$data['redirect'] = "index.php";
echo json_encode($_POST);
}
?>
还要检查是否通过
正确传递了用户名和密码alert( $('[name=username]').val() + | + $('[name=password]).val());
高于$ .post。
我通过硬编码用户名和密码检查了你的js,它们工作正常。 分裂和征服通常是一个好主意。对login.php页面的输入进行硬编码,并在其工作后首先运行它,然后将$ _POST参数作为输入。这样你就可以防止很多问题。
****Important Please ESCAPE ALL POST OR GET VARIABLES FOR MYSQL INSERT.
Otherwise your scripts are vulnerable to SQL injections.
ex: mysql_real_escape_string($_POST['username']);
mysql_real_escape_string($_POST['password']);
Please ignore if you are already doing this!