首页 > 网站建设 >

网站建设怎样解决“传递与会话”

发布时间:2019-01-14 作者:深圳网站建设

 传递会话使用Session跟踪一个用户,是通过在各个页面之间传递唯一的SessionID,并通过SessionID提取这个用户在服务器中保存的Session变量。深圳网站建设公司认为常见的SessionID传送方法有以下两种。
☑ 基于Cookie的方式传递SessionID,这种方法更优化,但由于不总是可用,因为用户在客户端可以屏蔽Cookie。
☑ 通过URL参数进行传递,直接将会话ID嵌入到URL中去。在Session的实现中通常都是采用基于Cookie的方式,客户端保存的SessionID就是一个Cookie。当客户禁用Cookie时,SessionID就不能再在Cookie中保存,也就不能在页面之间传递,此时Session失效。不过PHP5在Linux平台可以自动检查Cookie状态,如果客户端将它禁用,则系统自动把SessionID附加到URL上传送。而使用Windows系统作为Web服务器则无此功能。
1.通过Cookie传递SessionID
  如果客户端没有禁用Cookie,则在PHP脚本中通过session_start()函数进行初始化后,服务器会自动发送HTTP标头将SessionID保存到客户端电脑的Cookie中。类似于下面的设置方式:setCookie(session_name(),session_id(),0,'/')//虚拟向Cookie中设置SessionID的过程在第一个参数中调用session_name()函数,返回当前Session的名称作为Cookie的标识名称。Session名称的默认值为PHPSESSID,是在php.ini文件中由session.name选项指定的值。也可以在调用session_name()函数时提供参数改变当前Session的名称。在第二个参数中调用session_id()函数,返回当前SessionID作为Cookie的值。也可以通过调用session_id()函数时提供参数设定当前SessionID。第三个参数的值0,是通过在php.ini文件中由session.cookie_lifetime选项设置的值。默认值为0,表示SessionID将在客户机的Cookie中延续到浏览器关闭。最后一个参数‘/’,也是通过PHP配置文件指定的值,在php.ini中由session.cookie_path选项设置的值。默认值为‘/’,表示在Cookie中要设置的路径在整个域内都有效。如果服务器成功将SessionID保存在客户端的Cookie中,当用户再次请求服务器时,就会把SessionID发送回来。所以当在脚本中再次使用session_start()函数时,就会根据Cookie中的SessionID返回已经存在的Session。
2.通过URL传递SessionID
如果客户浏览器支持Cookie,就把SessionID作为Cookie保存在浏览器中。但如果客户端禁止Cookie的使用,浏览器中就不存在作为Cookie的SessionID,因此在客户请求中不包含Cookie信息。如果调用session_start()函数时,无法从客户端浏览器中取得作为Cookie的SessionID,则又创建了一个新的SessionID,也就无法跟踪客户状态。因此,每次客户请求支持Session的PHP脚本,session_start()函数在开启Session时都会创建一个新的Session,这样就失去了跟踪用户状态的功能。在PHP中提出了跟踪Session的另一种机制,如果客户浏览器不支持Cookie,PHP则可以重写客户请求的URL,把SessionID添加到URL信息中。可以手动地在每个超链接的URL中都添加一个SessionID。如下所示:<?phpsession_start();echo'<ahref="demo.php?'.session_name().'='.session_id().'">链接演示</a>';?>
【示例】
本例中使用两个脚本程序,演示了SessionID的传送方法。在第一个脚本test1.php中,输出链接时将SID常量附加到URL上,并将一个用户名通过Session传递给目标页面输出。如下所示:在脚本test2.php中,输出test1.php脚本在Session变量中保存的一个用户名。又在该页面中输出一次SessionID,通过对比可以判断两个脚本是否使用同一个SessionID。另外,在开启或关闭Cookie时,注意浏览器地址栏中URL的变化。代码如下:如果把客户端的Cookie禁用,单击test1.php页面中的超链接会出现下面的结果,在地址栏中会把SessionID以session_name=session_id的格式添加到URL上。如果客户端的Cookie可以使用,则会把SessionID保存到客户端的Cookie中,而SID就成为一个空字符串,不会在地址栏中的URL后面显示。启用客户端的Cookie,重复前面的操作。好了,网站建设公司本文关于网站建设怎样解决“传递与会话”的方法就分享到这里,谢谢关注,博纳网络编辑整理。
 
文章标题:网站建设怎样解决“传递与会话”
本文地址:https://www.198bona.com/news/2111.html
如果您觉得案例还不错请帮忙分享:

网站建设

网络推广

解决方案

域名主机

建站行业资讯