2019独角兽企业重金招聘Python工程师标准>>>

session是服务器端的一种会话机制,当客户端的请求服务器创建一个session时,服务器会先检测该请求里面是否包含一个惟一的sessionID,如果是,说明服务器已经为该用户创建过session,只要按照该sesionID检索出该用户的session供用户使用,如果没有sessionID,服务器会为该用户新建一个带有唯一表示服sessionID的session。创建完成后,该sessionID会被服务器返回给客户端,保存到客户端本地。

  一般保存该session ID的机制是Cookie,但是由于Cookies可以被人为禁止,这就得保证Cookies被禁止之后,仍旧可以通过session进行会话,一般是通过url重写进行,表现形式为http://...../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,另一种是作为查询字符串附加在URL后面,表现形式为http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。
为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。

另外是关于session失效的误区:

在谈论session机制的时候,常常听到这样一种误解“只要关闭浏览器,session就消失了”。其实可以想象一下会员卡的例子,除非顾客主动 对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保 留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所 以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个 session id就消失了,再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的 HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。

恰恰是由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。

好了,废话说了一大堆,说session丢失的解决办法吧:

1、session_start();应该尽量放置到页面的顶部;

2、如果php.ini里面没有配置 session Autostart的话,每次会话之前,都得手动开启session:session_start();

3、session是php里面的超全局变量,跟$_GET,$_POST,$_SERVER一样,所以使用的时候必须大写:$_SESSION['username']=$username;

4、跨页面传递示例:a.php页面传递$_SESSION['username']到b.php

转载于:https://my.oschina.net/u/3703261/blog/1557493

session无法传值解决方案!相关推荐

  1. 【49.Auth2.0认证与授权过程-微博开放平台认证授权过程-百度开放平台认证授权过程-社交登录实现(微博授权)-分布式Session问题与解决方案-SpringSession整合-Redis】

    一.知识回顾 [0.三高商城系统的专题专栏都帮你整理好了,请点击这里!] [1-系统架构演进过程] [2-微服务系统架构需求] [3-高性能.高并发.高可用的三高商城系统项目介绍] [4-Linux云 ...

  2. 分布式session之token解决方案实现

    分布式session之token解决方案实现 参考文章: (1)分布式session之token解决方案实现 (2)https://www.cnblogs.com/toov5/p/9904317.ht ...

  3. feign session 调用_springboot使用feign调用session传递失效解决方案

    标题 框架 version 1 springboot 1.5.9.release 2 springCloud 1.2.4.release 3 eureka 1.6.2 4 feign 9.5.0 前言 ...

  4. 关于feign调用时,session丢失的解决方案

    最近在做公司微服务项目的时候发现,微服务使用feign相互之间调用时,存在session丢失的问题. 例如,使用feign调用某个远程API,这个远程API需要传递一个鉴权信息,我们可以把cookie ...

  5. [转]ASP.NET 状态服务 及 session丢失问题解决方案总结

    转自[http://blog.csdn.net/high_mount/archive/2007/05/09/1601854.aspx] 最近在开发一ASP.NET2.0系统时,在程序中做删除或创建文件 ...

  6. 【转】jquery文件上传插件uploadify在.NET中session丢失的解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 基于jQuery和Flash的多文件上传插件uploadify的确很好用,具体配置和使用方法见以前的一篇文章: <一款基 ...

  7. Session一致性的解决方案

    什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文,这个相关信息就是session.这样,当用户在应用程序的Web页之间跳转时,存储在sess ...

  8. php session页面传值,PHP session在页面间传递的问题

    PHP session在页面间传递的问题: 前提: 使用codeIgniter的框架, 使用PHP自带的session 1. 在纯apache服务器上没有问题 2. 在Nginx的apache模式下, ...

  9. Session共享的解决方案

    Tomcat下集群Session共享的4个方案 问题引入 在这个分布式结构下,如果不用共享session的话,就会出现问题.当一个客户端发送一个请求(无session),通过nginx将第一次请求分发 ...

最新文章

  1. php代码以什么开始以什么结束,【后端开发】php语句以什么符号结束
  2. linux/windows中mysql、oracle、dm数据库连接
  3. P1576 最小花费
  4. python数据预测_使用Python预测缺失值
  5. mysql外卖怎么写_MySQL曹操外卖一 - osc_wy5qpqnh的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. python `__format__`
  7. C#数据库事务机制及实践(下)
  8. list是否包含字符串_Python创建list
  9. Atitit 集团与个人的完整入口列表 attilax的完整入口 1. 集团与个人的完整入口列表 1 2. 流量入口概念 2 3. 流量入口的历史与发展 2 1.集团与个人的完整入口列表
  10. 大地高、正高和正常高及高程异常
  11. oracle 查看表空间及用户,oracle 表空间及查看所有用户的表空间
  12. 【板栗糖GIS】twinmotion—twinmotion如何联动sketchup
  13. Mac下超级好用的5个顶级“实用”APP推荐
  14. Jmeter使用技巧集锦大全
  15. 阻焊机器人系统_点焊机器人
  16. hdu1260Tickets
  17. 阳明心学在敏捷开发中的应用
  18. linux垃圾文件清理,请问 如何linux 垃圾文件清理、
  19. 错误 bpbrm(PID=7552) 从客户端 - Script exited with status = 1 the requested operat
  20. oracle 创建索引和视图

热门文章

  1. QT4到QT5的变化!
  2. Spring的Java配置方式
  3. Android Studio 一些方便使用的设置
  4. php -- 检查是否存在
  5. 移动Web开发实践——解决position:fixed自适应BUG
  6. #HTTP协议学习# (五)压缩
  7. 国内首款商用LCA软件(eBalance)发布公告及培训通知
  8. 2. JSF---托管Bean
  9. Discuz!UCenter创始人密码重置方法
  10. SpringCloud实战5-Feign声明式服务调用