session_id() php,php中的sessionid控制

在php中,我们有时候需要用到session来控制会话,那么我们在页面中如何来使用session呢?

session是保存在服务器端的一块数据存储区,用来会话控制,每一个用户的session都有一个唯一的sessionid与其对应,客户端在第一次使用http与服务器通信时,服务器就应该给用户产生一个sessionid用于会话控制,当然http是无状态的通信协议,我们需要每次在与服务器通信的时候都需要把这个sessionid传给服务器才能让服务器进行会话控制和跟踪

ps:某商场的会员如果想让商场给自己做一个购物的跟踪记录,那么需要用到会员卡,我们明白,当然,一个会员去一次商场是无状态的,谁都不知道你是什么时候来的,你走就走了,也不可能对商场留下什么样的影响,那么逛商场这个动作属性无状态的,那么我们就需要用一种记录的机制去记录这个人的一个状态,那么就需要用到会员卡,

会员每次去商场,都需要用会员卡,工作人员才可以根据会员卡的号码把这个人的所有的记录都调取出来,那么好,这里的会员卡号就是sessionid,那么保存在商场内的用户信息就是session的信息

浏览器默认的情况下是会用cookie来存储sessionid的,但是如果客户端关闭了cookie,那么就需要用url来传递这个sessionid了,我们有下面的代码:

如有一个请求****?sid=***********

session_id($_GET['sid']);

session_start();//开启session,如果session_id()能返回值,说明这个一个存在的会话,去session

池中查找,如果session_id()无值,说明这是一个新的会话,需要去创建.

session_id($_GET['sid']);这句话是针对当客户端的cookie关闭的时候才会用到的,默认的情况下,它会从客户端传来的$_COOKIE信息中获取sessionid的信息.

所以我们在写的时候,我们不能这样写:

if(session_id($_GET['sid'])){

session_id('sid');

session_start();

}

我们最好这样来写

if(session_id($_GET['sid'])){

session_id('sid');//如url中有sessionid,那么取出给了session,如果没有,让下面的

session_start来从cookie中获取,如cookie中也没有,那么就创建

但是上面的写法就不合适了.

}

session_start();

使用session进行会话控制大概是这样的:

如果需要使用session会话控制,我们需要在页面开头用session_start()来开启session,它的作用是:

当客户端的cookie信息中有sessionid信息传入的话,那么就会根据这个sessionid从服务器的session池中取出与之对应的信息,并给了超全局变量

$_SESSION,如果cookie中没有呢?也许是客户端的cookie关闭了,那么我们应该怎么样处理呢?我们应该用url把sessionid传给服务器,在服务器端,如果它从cookie中取不出值的话,可能需要去session_id方法里找,当然可能底层不是这样实现的,那么我们需要把url中的sessionid用session_id('id')方法,给了session,之后,我们再session_start()的话,那么就会从session_id()中取出了sessionid,这样就能获取我们的sesion信息了.

所以说

session_start()的作用是:如果session_id()没有sessionid,那么就创建sessionid,如果有,那么就从session池子里获取,这样就保证了一个会话.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值