php中如何传递Session ID

一般通过在各个页面之间传递的唯一的 Session ID,并通过 Session ID 提取这个用户在服务器中保存的 Session 变量,来跟踪一个用户。常见的 Session ID 传送方法主要有两种。

第一种方法是基于 Cookie 的方式传递 Session ID,这种方法比较优化,但是不能经常使用,因为用户在客户端可以屏蔽Cookie 。

第二种方法则是通过 URL 参数进行传递,直接将会话 ID 嵌入到 URL 中去。

在 Session 的实现中通常都是采用基于 Cookie的方式,客户端保存的 Session ID 就是一个 Cookie 。当客户端禁用 Cookie时,Session ID就不能再 Cookie 中保存,也就不能再页面之间传递,此时 Session失效。不过在 Linux 平台上可以自动检查 Cookie 状态,如果客户端禁用它,则系统自动把 Session ID 附加到 URL 上传送。而使用 Windows 系统则没有此功能。

1.通过 Cookie 来传递 Session ID

如果客户端没有禁止 Cookie,则在 PHP脚本中通过 session_start()函数进行初始化后,服务器会自动发送 HTTP 标头将 Session ID 保存到客户端计算机的 Cookie 中。类似如下的的设置方式:

虚拟向 cookie 中设置 Session ID 的过程


1

setcookie(session_name(), session_id(), 0, ‘/‘)

第一个参数调用 session_name()函数,返回当前 Session 的名称作为 Cookie的标识名称。可以再调用 session_name()函数时提供参数改变当前 Session 的名称。

第二个参数调用 session_id()函数,返回当前 Session ID 作为 Cookie 的值。也可以通过调用 session_id()函数时提供参数设定当前的Session ID。

第三个参数值为 0,通过在php.ini文件中由 session.cookie_lifetime 选项设置的值。默认为0,表示 Session ID 将在客户端的 Cookie 中延续到浏览器关闭。

第四个参数 “ / ”,也是通过PHP配置文件指定的值,在 php.ini 中由 session.cookie_path 选项设置的值。默认为 “ / ”,表示在cookie 中要设置的路径在整个域内都有效。

2. 通过 URL 来传递 Session ID

如果客户端浏览器支持 Cookie,就把 Session ID 作为 Cookie 保存在浏览器中。但如果用户禁止 Cookie 的使用,则浏览器中就不存在作为 Cookie 的 Session ID,因此在客户端请求中不包含 Cookie 信息。如果调用 session_start()函数时,无法从客户端浏览器中取得作为 Cookie 的 Session ID,则又创建了一个新的 Session ID,也就无法跟踪用户状态。 因此,每次用户请求支持 Session 的 PHP脚本,session_start()函数在开启 Session 时都会创建一个新的 Session,这样就失去了跟踪用户状态的功能。

在 PHP 中提供了跟踪 Session 的另一种机制,如果客户端浏览器不支持 Cookie,则 PHP 可以重写客户端请求 URL,把

Session ID 添加到 URL 中。可以手动在每个超链接的 URL 中都添加一个 Session ID,这种方法工作量比较大,一般不建议使用这种方式。其示例的代码如下所示:


1

2

3

4

5

6

<?php

//开启 session

session_start();

// 在 URL 后面附加参数,变量名为session_name()获取的名称,值为session_id()获取

echo ‘<a href="test.php?‘.session_name().‘=‘.session_id().‘">演示</a>‘;

?>

原文地址:https://www.cnblogs.com/apolloren/p/8996162.html

时间: 2024-10-09 17:58:11

php中如何传递Session ID的相关文章

OpenVPN移动性改造-靠新的session iD而不是IP/Port识别客户端

设备移动性的挑战 1.设备会经常由于小区或模式切换而更改IP地址. 这种地址更新是移动网络的正常行为,不应作为故障或事故看待,因此理应对应用程序透明,应用不应被此类事件打扰,更无责做善后处理. 2.移动设备存在多张3G/4G/2.75G网卡时,希望这些网卡同时收发数据. 由于这些网卡一般属于不同运营商网络,其网络架构又不同,一般要求数据包携带本运营商网卡的IP地址作为源(这一般是为了在该运营商核心网终点处做NAT),因此为了支持多运营商多网卡负载均衡,一个应用程序业务流数据包必然要支持不同的IP

php中如何启动Session会话

Session 的设置与 Cookie 不同,必须先行启动,在PHP中必须调用 session_start()函数,以便让 PHP 核心程序将和 Session相关的内建环境 变量预先载入到内存中.大理石平台精度等级 使用 session_start()函数启动会话,语法格式如下的形式: 1 session_start(void);   // 创建  Session,开始一个会话,进行 Session 初始化 session_start()这个函数没有参数,且返回值均为 TURE.该函数有两个主

php中session_id()函数详细介绍,会话id生成过程及session id长度

php中session_id()函数原型及说明session_id()函数说明:stringsession_id([string$id])session_id() 可以用来获取/设置 当前会话 ID.为了能够将会话 ID 很方便的附加到 URL 之后, 你可以使用常量 SID 获取以字符串格... php中session_id()函数原型及说明 session_id()函数说明: ? 1 string session_id ([ string $id ] ) session_id() 可以用来获

关于缓存中Cookie,Session,Cache的使用

文章来源:http://canann.iteye.com/blog/1941173 以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application. 其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息. Session则保存对话信息.Application则是保存在整个应用程序范围内的信息,相当于全局变量. Session Session用来保存每一个用户的专有信息 Session的生存期是用户持续请求时间加上一段时间(一般是20分

PHP 中cookie 和 session 的分析

1. PHP 的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制.     PHP 在http 协议的头信息里发送cookie,因此  setcookie()     函数必须在其它信息被输出到浏览器 前调用,这和对  header()    函数的限制类似. 1.1 设置cookie: 可以用 setcookie()或 setrawcookie()函数来设置 cookie.也可以通过向客户端直接发送http  头来 设置.     1.1.1  使用 set

关于HTTP中cookie 和session机制

前言 Cookie是由网景公司的前雇员Lou Montulli 在1993年发明的.向前辈致敬. 1. Cookie和Session介绍  Cookie 和Session 是为了在无状态下HTTP协议之上维护会话状态,使得服务器可以知道当前适合哪个客户在打交道.因为HTTP协议是无状态的,即每次用户请求到达服务器时,HTTP服务器并不知道这个用户是谁.是否登录过等.现在的服务器之所以知道我们是否已经登录,是因为服务器在登录时设置了浏览器的Cookie!Session则是借由Cookie而实现的更

cookie禁用后session id传值的问题

上一篇说道session和cookie的关系,一般情况下session是借助于cookie传值的,那么cookie被禁用了,session怎么传id的值,下面介绍两种方法 经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面. 附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面.网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id. 当客户端浏览器中禁止 Cookie,Se

Asp.net中Application、Session、Cookie、ViewState、Cache、Hidden的区别

这些对象都是用来保存信息的,包括用户信息,传递值的信息,全局信息等等.下面主要说一下他们之间的区别: 1.Application对象 Application用于保存所有用户的公共的数据信息,如果使用Application对象,一个需要考虑的问题是任何写操作都要在Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和Applicaiton.Unlock方法来避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问

详解PHP中cookie和session的区别及cookie和session用法小结

cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期时间,路径和域:如果cookie不设置生命周期,则以浏览器关闭而关闭,这种cookie一般存储在内存而不是硬盘上.若设置了生命周期则相反,不随浏览器的关闭而消失,这些cookie仍然有效直到超过设定的过 期 时间.session 一种类似散列表的形式保存信息,当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已