你已问过这个问题了
可能的问题
1、session会过期,这个服务器设置有关
一般情况下,session过期,你操作会提示你重登录
2、如果session不存数据库,你的session在重登录后是变化的,所以session是可变的
3、如果你想用session记录用户操作,而且用数据库存
注意,存时应检测session是否存在?如存在则存入数据库
4、如果用数据库存session,也要注意,每次登录,你的session变量也是变化的,所以,你的session_id实际上已变成了另一个,你取出来的显然为空
5、无论是用数据库还是不用数据库,每次登录后session_ID都会变,变量已发生变化
6、如果你想在下次登录从数据库取出原来的session_ID,必须结合cookie,且保证session不过期,且没有被垃圾删除

解决方案 »

  1.   

    不懂。我没用数据库存session_id。
    我是这样理解的:
    每次登录从数据库用户表中根据登录名取出用户姓名赋值给session变量;
    $_SESSION["susername"] = $data['username'];数据库用户表登录名和用户姓名是不变的,所以每次登录$_SESSION["susername"] 的值就也应该一样。写入数据库工作提醒表中此登录名的用户姓名也应该一样。
    而且几百条记录只有两条记录的用户姓名为空格。个人感觉还是跳出那个对话框的的问题(什么导致的)。各位再说说,谢谢!
      

  2.   

    你要做些检查,
    就跟用Cookie的一样, 
    永远不知道什么时候用户手工清除Cookie!
      

  3.   

    个人感觉还是跳出那个对话框的的问题(什么导致的)。
    ————————————————————————————
    有这种可能,但你自己测试看看写入数据库工作提醒表
    ——————————————————
    注意session变量是否存在,如过期不存存入表可能为空,但你表中设NO NULL 的话应有出错提示
      

  4.   

    个别情况会出现一两个用户的session丢失,我出现过这种情况,你最好在写入数据库的时候检查一下session是否存在,还有,你说数据库里的用户名字段存的是空格,确认是空格吗?
      

  5.   

    确认是空格,我用如下语句查出两条记录。
    select * from workwarn where username=''
      

  6.   

    正常情况是不会出问题的
    如果你存库话,可加入判断:变量是否仍存在,是否为空(可用trim去掉空),是否还是你那个变量,如果是,存库存完成功后仍可再判断一下这个变量是否存,是否仍是原来的那个变量,就不会出问题
      

  7.   

    写入之前加个判断不就行了
    if(isset($_SESSION["susername"]) && (trim($_SESSION["susername"]) != ''))
    {
    }