在login.php中记录用户成功登陆后的cookie值,形如setcookie('name', 'admin');
在其他静态html网页中,我要判断该用户是否已经登录,如果登录,正常浏览网页内容,如果没有登录,就跳转到login中,弹出登陆框,说白了就是就是对某些网页的一种加密,只有特定用户才能浏览。
在需要保密的网页中,我想用js判断用户是否登录,我想用一下代码实现:<script type="text/javascript">
function getCookie(name)
{
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
    if(arr != null) return unescape(arr[2]); return null;
}// 判断是否已经登录
if(!getCookie("name"))
{
  location.href="login.php";  
}
</script>以上代码我只是简单的做个测试,getCookie()函数是从网上参考的。
现在问题是:用户没登陆时,会跳到login.php,但是当用户正确登陆后,还是跳条到login.php,与目标相悖,因此我怀疑,js并没有获取名为“name”的cookie值,所以什么情况下都会跳到login,那怎么样才能让js来调用php设置的cookie呢?或者有什么更好的方法来实现上面的功能?

解决方案 »

  1.   

    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
    这是个正则,关键是你要根据你网站的格式,设置正确的正则表达式.
      

  2.   

    你可以这样<script>
    var cookiecheck = '<?php echo $_COOKIE['cookiename'];?>';
    if(cookiecheck == ''){
    }
    else
    {
    }
      

  3.   

    你在静态页面用JS调用PHP ,php页面判断是否登录就可以了。
    参考http://www.yubaby.com里面的知识模块,你就明白了。
    这就是我的解决方案,我觉得很好!
      

  4.   

    这个想法我觉得挺好,可是还是检测不到cookie啊
      

  5.   

    真是检测不到,我试了N次了,不知道怎么回事,有高手说这是编码的问题,但是我都是gbk编码啊,难道php的cookie和JavaScript的cookie不通用?
      

  6.   

    在php中print_r($_COOKIE)有你需要的值吗?
      

  7.   

    php中的cookie可以相互认识,JavaScript中的cookie也可以相互认识,但是JavaScript读取php设置的cookie就什么也读不到,真奇怪!页面编码都是一样的啊!
      

  8.   

    问题解决了,但不知道问什么?
    我在页面开始调用document.cookie来获取cookie的值,然后alert出来,发现我在php中设置的所有cookie名称前面都加了ppzuj,真是奇怪!不知道这个ppzuj是怎么出来的?
      

  9.   

    很多程序设置cookie时会增加一个随机的前缀,避免重复。php的cookie是你自己setcookie的吗?
      

  10.   


    不管你是用ASP PHP 还是JSP JS 只要是同一域名下的COOKIE 都可以互相访问。关于COOKIE前加了ppzuj前缀,网站都这样设置的 读的时候在解析时去掉前缀 
      

  11.   

    对,php的cookie是我自己设置的,每当用户登录成功时,就设置关于用户的cookie,用JavaScript读出来就是加了前缀的cookie