2013-03-28 94 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