我认为:
if(session_is_registered("uid"))//注册变量
        session_unregister("uid");
    session_register("uid");
重复注册session,不是好方法。
而且还有错误。如果uid这个session存在,你就注销,然后又注册一次,那uid肯定是空的,注册不了。
你至少应该将
if(session_is_registered("uid"))
        session_unregister("uid");
放在开始到还可以行的通。我觉得你应该用这个方法比较好:
if(session_is_registered("uid"))
  header("location:xxx.php");
如果session uid存在,就直接进入主页面

解决方案 »

  1.   

    你也可以将
    $uid=login($username,$userpass);//处理函数,返回一个字符串  
    这行代码放在
    session_register("uid");
    之前一行,这样应该可以
      

  2.   


    session_start();
    $uid=login($username,$userpass);//处理函数,返回一个字符串    
    session_register("uid");
    因该就可以了
      

  3.   

    没有必要判断是否存在,session会自己处理的
      

  4.   

    if(session_is_registered("uid"))//注册变量
            session_unregister("uid");
        session_register("uid");
    好像有点多余,系统应该会自动覆盖原有的SESSION
      

  5.   

    我的看法:
    sessionID一被分配以后就是唯一的,如果重复登陆的话因为已经存在这个ID所以会出错(比如你在这个论坛试试)所以判断一下如果变量已经存在那么转到出错信息,最好不要先session_unregister再session_register
    浅妄薄见,望与斟酌
      

  6.   

    把session_start()放到第一行,xinxin1982说得没错