2013-03-28 66 views
1

我有我的網站的登錄區域,登錄時我設置了會話變量$_SESSION['logged_in'] = true基於PHP會話變量的Javascript表單驗證

現在我也有很多表單和用戶可以輸入註釋的東西。很顯然,在我的PHP驗證中,我檢查用戶是使用會話變量登錄的,但我也想要javascript驗證,因爲我可以讓用戶體驗變得更加滑落。

$("body").on("click", ".submit", function(e){ 
    e.preventDefault(); 
    if (user == logged in){ 
     ...AJAX call to php file.... 
    } 
}) 

那麼人們通常會如何檢查用戶是否使用javascript登錄? 即 if user == logged in

+1

首先我會提到你應該在後端進行驗證。但是,要回答這個問題,你可以注入php變量到js中,所以如果你有'$ loggedIn = true',你可以這樣做:js:'if(<?php echo $ loggedIn?>) – 2013-03-28 10:31:57

+0

Is這個「人」做的方式呢?它確實完成了工作,但我不知道如何混合使用javascript和php。 – Lars 2013-03-28 10:34:41

回答

1
  • 您可以通過AJAX過程中檢查用戶權限(與JSON爲例),但是這會提供一些額外的延遲。

  • 你可以只寫一個這樣的價值對全球範圍JS:

    if (userIsLogged()) { echo "<script>document.mysite.userlogged = true;</script>"; }

    ,那麼你可以檢查document.mysite.userlogged變量。

  • 你也可以在PHP中設置一個cookie,這可以通過JavaScript獲得。要在JS正確獲得餅乾看到:的jQuery

    <div id="comments" data-logged="<?php echo $isLogged; ?>"> ... </div>

    ,並得到它:Javascript getCookie functions

  • 如果你不想注入JS代碼,你可以設置像一些屬性

    if ($("#comments").attr('data-logged') == 1) {

  • 你能提供記錄/ notlogged整個頁面的特定功能通過生成JS文件,如:<script type="text/javascript" src="http://yoursite.com/somefile.php">的d動態生成它,但要注意緩存!

個人而言,我會去的數據XXX屬性如果TOU想,如果你入住JS登錄狀態下多次進行個性化單塊和全局JS變量。

+0

謝謝,這看起來不錯。我可以問爲什麼你可以調用變量{document.mysite.userlogged}而不僅僅是{userlogged}? – Lars 2013-03-28 10:50:59

+0

userlogged可以很好,但要注意JavaScript範圍和關閉,文檔....乾淨地表明我們考慮全局變量。另外,如果你想首先設置'document.mysite.variable',你必須'document.mysite = {}' – 2013-03-28 10:59:22