2015-04-07 35 views
0

我有一個問題,我的登錄腳本,我已經實現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(); 
    } 
} 

?> 

來解決這個問題,我試着用清爽header函數在登錄頁面。 PHP但仍然沒有發生,我必須手動刷新頁面,然後它加載歡迎用戶。難道我做錯了什麼。

+0

你啓動的index.php會議? –

+0

是<?php session_start(); ?> – WESTKINz

+0

正如Jeroen所述;再加上,我沒有看到所謂的「ACK 1」的ID爲您'的document.getElementById(「ACK 1」)' –

回答

1

這裏是一些改變我做了這樣其目前工作正常

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(); 


} 
3

,當你調用使用AJAX文件不能使用header /服務器端重定向。

相反,你必須檢查你的Ajax調用成功功能的結果,並使用JavaScript如果登錄正確處理重定向。

+0

哦更復雜的感謝,我會嘗試這樣做,:) – WESTKINz

+0

@ user3250974不是真的,使用'window.loction.href'或'window.location.replace'在JavaScript中重定向非常容易。 – jeroen

+0

大聲笑我不是親這個即時通訊新的這個,所以我想這是人的第一步.... – WESTKINz

0

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

0

你可以把location.reload()到您的HttpHandler。

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

當用戶輸入正確的憑據,你不返回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(); 
    }