这两天刚学了php的session,但是还有几个问题一直让我很迷茫,希望高手不吝赐教,下边是我的疑惑……第一、新建一个登陆页面,login.php
当验证用户名和密码都通过后,运行如下代码session_start(); 
$user=$uname;  //$uname是登陆时在表单输入的用户名
$_SESSION ['user']=$user;
echo "<a href='next.php'>下一页</a>";点击链接进入next.phpsession_start (); echo '传递的session变量的值为:'.$_SESSION['user']; 我想问的是,在这种情况下,我没有用url传递sessionid 但是next.php页面可以获取session变量user的值,如果是这样的话,那么我们用url传递sessionid还有什么用呢?
第二、还是问一下sessionid的问题,假如我设置了session的周期,当登陆成功后,设置了session,然后我关闭浏览器,再次打开浏览器,进入一个新的页面,在session周期没有过期的情况下,服务器如何判断我已经登陆了,还是我还需要重新登录一次?

解决方案 »

  1.   

    默认,session.use_cookies = 1这样的话,你查一下,firebug 或者 httpwatch  发现cookie里带一个默认名字为PHPSESSID的值,session_id值在这里传递。
    关闭浏览器,session没有过期。但是没法启用原来的会话了【默认情况session.cookie_lifetime=0】,会创建不同的session_id
    但是多标签浏览器,一般标签间共享cookie,在session有效期内,无需再次登录
      

  2.   

    sessionid 是保存在客户端cookie里的,URL传的话可以在被禁止cookie时也起作用
    session虽然没有过期,但是你重新打开页面时候的sessionid 不是原来的sessionid 了,也就是说你重新打开它会新生成一个sessionid ,所以你要服务器判断你登陆的话,需要把登陆信息存在cookie里面,并在服务端判断
      

  3.   

    我关闭了浏览器的cookie,为什么还是不用使用url传递sessionid就可以在下一页获取session变量的值呢?
      

  4.   

    像一楼说的,你用firebug看下,你点下一页的时候他应该把sessionid一起传过去了
      

  5.   


    菜菜的问一句,如何firebug……
      

  6.   

    firefox下的一个调试工具,你装好firefox后点工具--附加组件,搜索这个安装,然后再右下角看到她的图标就可以用了
      

  7.   

    使用FIREFOX浏览器,然后下载一个插件叫做firebug
      

  8.   

    假如你的session没有过期  IE7版本以上的浏览器会记录你session值  你关闭页面再打开时 session还在的    用session传值比URL传真安全  但是在不用session时要把session的值清空