簡體   English   中英

我嘗試在登錄腳本中使用Ajax,但是頁面無法重定向

[英]I tried using ajax in login script but the page wont redirect

我的登錄腳本在實現Ajax時遇到問題,因此如果登錄無效,消息將顯示在同一頁面上,但是當用戶輸入正確的信息而沒有任何反應時,我遇到了一些問題,我必須刷新頁面然后再刷新頁面說歡迎用戶,但當用戶輸入錯誤信息時,它將立即顯示無效的登錄消息。

的index.php

<?php
if (!isset($_SESSION['uid'])) {
    echo "<p>Welcome to our homepage. you can be part of our awesome community by signing up.</p>";
}else{
    echo "<p>You are now logged in and able to post comments in our site</p>";
}
?>
<?php
if (!isset($_SESSION['uid'])) {
    echo "<form action='login_parse.php' method='post' style='display: inline-block'>
    Username: <input type='text' name='username' id='username' />
    Password: <input type='password' name='password' id='password' />
    <input id='submit-button' type = 'button' value='login' id='submit' />";
    echo "</form>";
    echo "<form action='signup.php' method='post' style='display: inline-block'>";
    echo "&nbsp";
    echo "<input type='submit' name='submit' value='Signup'>";
    echo "</form>";

} else {
    echo "<form style='display: inline-block'>";
    echo "<p>You are logged in as ".$_SESSION['username']."";
    echo "</form>";
    echo "<form action='logout_parse.php' method='post' style='display: inline-block'>";
    echo "&nbsp";
    echo "<input type='submit' value='logout'>";
    echo "</form>";
    echo "<form action='profile.php' method='post' style='display: inline-block'>";
    echo "&nbsp";
    echo "<input type='submit' value='profile'>";
    echo "</form>";
}
?>
<script src="ajax.js"></script>
<script>


var HTTP = loadXMLDoc();

var submitEvent = document.getElementById("submit-button").onclick = function(){

    hello2(HTTP);
};

</script>

ajax.js

function hello2(){

    var username = encodeURIComponent(document.getElementById('username').value);
    var password = encodeURIComponent(document.getElementById('password').value);

    var url = "login.php?username="+username+"&password="+password;

    HTTP.onreadystatechange=function()
    {
        if (HTTP.readyState==4 && HTTP.status==200)
        {
            document.getElementById("ack1").innerHTML=HTTP.responseText;
        }
    };
    HTTP.open("POST", url ,true);
    HTTP.send();
}

的login.php

<?php

session_start();
include_once("connect.php");

if (isset($_REQUEST['username'])) {
    $username = mysql_real_escape_string( $_GET["username"]);
    $password = mysql_real_escape_string( md5 ($_GET["password"]));
    $sql = "SELECT * FROM users WHERE username='".$username."' AND password='".$password."' LIMIT 1";
    $res = mysql_query($sql) or die(mysql_error());

    if(mysql_num_rows($res) == 1) {
        $row = mysql_fetch_assoc($res);
        $_SESSION['uid'] = $row['id'];
        $_SESSION['username'] = $row['username'];
            header("location: index.php");
        exit();
    } else{
        echo "INVALID login information.";
        exit();
    }
}

?>

為了解決這個問題,我嘗試使用login.php中的標頭函數刷新頁面,但是仍然沒有任何反應,我必須手動刷新頁面,然后加載歡迎用戶。 難道我做錯了什么。

使用ajax調用文件時,不能使用header /服務器端重定向。

取而代之的是,如果登錄處理正確,則必須檢查ajax調用成功函數中的結果,並使用javascript重定向。

這是我所做的一些更改,因此現在可以正常使用

   function hello2(){

    var username = encodeURIComponent(document.getElementById('username').value);
    var password = encodeURIComponent(document.getElementById('password').value);

    var url = "login.php?username="+username+"&password="+password;

HTTP.onreadystatechange=function()
  {
    if (HTTP.readyState==4 && HTTP.status==200)
    {
        if (HTTP.responseText == 1){

                    window.location.replace("index.php");

        }
        else{

                document.getElementById("ack1").innerHTML=HTTP.responseText;

        }
   } 
  } 
HTTP.open("POST", url ,true);
HTTP.send();


}

您可以使用JavaScript的window.location.replace('redirectURL')重定向到特定頁面。

您可以將location.reload()放入HTTPhandler。

HTTP.onreadystatechange=function()
    {
        if (HTTP.readyState==4 && HTTP.status==200)
        {
            document.getElementById("ack1").innerHTML=HTTP.responseText;
        }
        else {
            location.reload();
        }
    };

當用戶輸入正確的憑證時,您不會為ajax調用返回正確的響應。

if(mysql_num_rows($res) == 1) {
        $row = mysql_fetch_assoc($res);
        $_SESSION['uid'] = $row['id'];
        $_SESSION['username'] = $row['username'];
           echo "Logged in as ".$row['username'];
        exit();
    } else{
        echo "INVALID login information.";
        exit();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM