0

それで、正しい詳細でログインすると、システムは空白のメッセージでエラーメッセージを表示し、リダイレクトしませんか? コードで空白のエラーを返す方法がわかりません。

それを呼び出す:

$("#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;
}
4

2 に答える 2

1
header("Location: workspace/index.php");

Ajax リクエストは、データを別のページ (スクリプト) に渡します。このページは、このデータを処理し、通常は何らかのデータを返します。再配置を試みるのではなく、返される必要があるデータをエコーする必要があります。Ajax リクエストを行うページは、必要に応じて JavaScript を使用して現在のページをリダイレクトする必要があります。

また、header() 呼び出しの後にデータをエコーするため、このエコーされたデータはおそらく送信されません。

于 2013-06-08T02:13:29.880 に答える
0
  1. 関数location.reload()が成功すると、現在のページがリロードされます。

  2. 別のオプションで、リダイレクトする 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;
}
于 2013-06-08T02:42:30.833 に答える