2011-07-17 199 views
0

好在我的主頁上我做了一個用戶名和密碼檢查,然後使用jquery document.location將您發送到登錄頁面,說secure.php ... 。雖然這個工程,它會先送你到secure.php,然後圖像開始加載...我怎麼能這樣做,它加載整個頁面,然後發送給你secure.php頁面加載後轉到頁面

例如: -

$.ajax ({ 
     url: loginCheck.php, 
     type: 'POST', 
     data: username + password , 
     success: function (check){ 
       if(check==1) 
        document.location= /loginpage/secure.php 
       else alert(invalid username or pass) 

      } 
     }); 
+3

如果我在瀏覽器地址欄中直接輸入「http:// yoursite.com/secure.php」,而沒有經過第一頁並提供任何用戶名和密碼,該怎麼辦?你有沒有考慮過你的網站的* use-case *? –

+0

它會把你推回主頁 – Aggiephoenix

+0

好的,那很好。 –

回答

0

......這讓我感到非常不安全,但哦。

除非你在jQuery中構建一個元框架,其中所有的頁面加載都在「shell」中執行,然後僅在準備渲染時顯示,否則答案是,我敢肯定,你不能。

頁面有確定的生命週期。 jQuery和AJAX有點模糊了這一行,但頁面加載是控制腳本的單一事件。加載頁面會使您用來加載頁面的腳本消失。

+0

什麼部分你認爲是不安全的? – Aggiephoenix

+0

對登錄檢查器的ajax調用將用戶名和密碼視爲單個字符串。這幾乎與沒有密碼一樣,只是一個奇怪的用戶名。它還阻止了使用鹽漬散列存儲密碼的最佳做法。那麼喬帶密碼的Pass和Joe Pass沒有密碼是同一個人嗎?安全方面,這聽起來不太健壯。 –

+0

是不是在幕後發生?如何糾正它? – Aggiephoenix

1

編輯:我現在替換我的整個問題,我明白你想要做什麼。在secure.php,把所有的代碼在一個包含分區,這樣的事情:

<body> 
    <div id="contentContainer"> 
     <!-- content goes here --> 
    </div> 
</body> 

設置樣式爲#contentContainer被隱藏:

#contentContainer { 
    display: none; 
} 

添加window.onload處理程序來顯示DIV 。與onready不同,onload不會在所有內容加載包括圖像之前調用。

$(window).load(function() { 
    $("#contentContainer").show(); 
}); 

你可能想要做一樣的事情,相反的「加載」div與消息說「加載...」。即,最初顯示它,並將其隱藏在onload處理程序中。

編輯:您可以通過在上一頁中的隱藏div中預載圖像加速頁面的加載。

Home.php

<div class="preloader"> 
    <img src="..." /> 
    ... 
</div> 

.preloader { 
    display: none; 
} 

Secure.php應加載使用緩存的圖像。

+0

好吧所以...在上面的例子說即時通訊做一個按鈕點擊功能將做到$(窗口).load(函數( ))?? – Aggiephoenix

+0

即時通訊使用谷歌託管的另一件事jquery – Aggiephoenix

+0

@Aggiephoenix - 查看編輯我的答案。 – gilly3