1

拜托,你能帮我吗?我是编程初学者,所以如果这是一个愚蠢的问题,请耐心等待。谢谢你。

我有带有登录表单(用户名、密码)的 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 中),我也会遇到同样的问题。我不知道,我做错了什么:(

感谢您的帮助!瓦沙

编辑 解决了!我从登录脚本到数据库的连接不好。初学者误区。感谢所有回复。

4

1 回答 1

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!
于 2012-06-21T22:47:06.403 回答