首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php不重定向和登录

php不重定向和登录
EN

Stack Overflow用户
提问于 2013-06-08 10:05:06
回答 2查看 115关注 0票数 0

那么,当我使用正确的详细信息登录时,我的系统会给出一条带有空白消息的错误消息,并且不会重定向?为什么会发生这种情况,我不明白为什么在我的代码中返回一个空白错误是可能的?

正在调用它:

代码语言:javascript
复制
$("#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;
});  

正在检查:

代码语言:javascript
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-08 10:13:30

代码语言:javascript
复制
header("Location: workspace/index.php");

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

此外,您在header()调用之后回显数据,因此回显的数据可能不会被发送。

票数 1
EN

Stack Overflow用户

发布于 2013-06-08 10:42:31

  1. On success function location.reload(),将重新加载当前页面。
  2. 另一个选项发布要重定向的url字符串,成功后使用var.

执行重定向

代码语言:javascript
复制
$("#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

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16995306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档