PHP不能重定向和登录


php not redirecting and logging in

所以当我用正确的详细信息登录时,我的系统给出了一个空白消息的错误消息,并且没有重定向?为什么会发生这种情况,我不知道如何在我的代码中返回一个空白错误?

调用:

$("#log").click(function () {
    username = $("#user").val();
    password = $("#password").val();
    submit = $("#log").val();
    $.ajax({
        type: "POST",
        url: "",
        data: "submit=" + submit + "&username=" + username + "&password=" + password,
        success: function (response) {
            if (response == 'success') {
                //should never be called?
            } else {
                $("#error-log").remove();
                var error_msg = response;
                $("#s-log").append('<div id="error-log" class="err welcome dismissible">' + error_msg + '</div>');
            }
        }
    });
    return false;
});  
检查:

if($_POST['submit']=='Login')
{
    // Checking whether the Login form has been submitted
    $err = array();
    // Will hold our errors

    if(!$_POST['username'] || !$_POST['password'])
        $err[] = 'All the fields must be filled in!';
    if(!count($err))
    {
        $_POST['username'] = mysql_real_escape_string($_POST['username']);
        $_POST['password'] = mysql_real_escape_string($_POST['password']);
        $_POST['rememberMe'] = (int)$_POST['rememberMe'];
        // Escaping all input data
        $row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
        if($row['usr'])
        {
            // If everything is OK login
            $_SESSION['usr']=$row['usr'];
            $_SESSION['id'] = $row['id'];
            $_SESSION['rememberMe'] = $_POST['rememberMe'];
            // Store some data in the session
            setcookie('FRCteam3482Remember',$_POST['rememberMe']);
            header("Location: workspace/index.php");
            echo 'success';
        }
        else $err[]='Wrong username and/or password!';
    }
    if(count($err)) {
        $_SESSION['msg']['login-err'] = implode('<br />',$err);
        // Save the error messages in the session
        echo $_SESSION['msg']['login-err'];
        //php unset($_SESSION['msg']['login-err']);
        //header("Location: index.php");
    }
    exit;
}
header("Location: workspace/index.php");

Ajax请求将数据传递给另一个页面(脚本),该页面处理该数据并通常返回一些数据。您应该只回显需要返回的数据,而不是尝试重新定位。发出Ajax请求的页面应该在必要时使用JavaScript重定向当前页面。

而且,您在header()调用之后回显数据,因此该回显数据可能不会发送。

  1. 关于成功函数location.reload(),将重新加载当前页面

  2. 另一个选项post你想重定向的url字符串,成功后使用var重定向。

$("#log").click(function(){
    username=$("#user").val();
    password=$("#password").val();
    submit=$("#log").val();
    currentpage=$("#currentpage").val();//submit current page url or some useful info about it
    $.ajax({
        type: "POST",
        url: "",
        data: "submit="+submit+"&username="+username+"&password="+password+"&currentpage="+currentpage,
        success: function(response) {
            if(response.msg=='success') {
                window.location.href=response.url;
            }
            else {
                $("#error-log").remove();
                var error_msg = response;
                $("#s-log").append('<div id="error-log" class="err welcome dismissible">'+error_msg+'</div>');
            }
        }
    });
    return false;
});
PHP

if($_POST['submit']=='Login')
{
    // Checking whether the Login form has been submitted
    $err = array();
    // Will hold our errors

    if(!$_POST['username'] || !$_POST['password'])
        $err[] = 'All the fields must be filled in!';
    if(!count($err))
    {
        $_POST['username'] = mysql_real_escape_string($_POST['username']);
        $_POST['password'] = mysql_real_escape_string($_POST['password']);
        $_POST['rememberMe'] = (int)$_POST['rememberMe'];
        // Escaping all input data
        $row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
        if($row['usr'])
        {
            // If everything is OK login
            $_SESSION['usr']=$row['usr'];
            $_SESSION['id'] = $row['id'];
            $_SESSION['rememberMe'] = $_POST['rememberMe'];
            // Store some data in the session
            setcookie('FRCteam3482Remember',$_POST['rememberMe']);
            header("Location: workspace/index.php");
            echo "{'msg':'success','url':'".$_POST['currenturl']."'}";
        }
        else $err[]='Wrong username and/or password!';
    }
    if(count($err)) {
        $_SESSION['msg']['login-err'] = implode('<br />',$err);
        // Save the error messages in the session
        echo $_SESSION['msg']['login-err'];
        //php unset($_SESSION['msg']['login-err']);
        //header("Location: index.php");
    }
    exit;
}