php SESSION 不能跨页面传递

  今天想用一个session来实现用户登录判断,也算是对之前session的探究,查了下资料session的运行机制如下:

  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:

a.php:

<?php
session_start();
$username=$_POST[‘username‘];
$_SESSION[‘username‘]=$username;
?>

b.php:

<?php
session_start();
echo $_SESSION[‘username‘];
?>

  

时间: 2024-08-29 08:15:21

php SESSION 不能跨页面传递的相关文章

php session跨页面传递 session值丢失问题之完美解决

今天想用一个session来实现用户登录判断,也算是对之前session的探究,查了下资料session的运行机制如下: session是服务器端的一种会话机制,当客户端的请求服务器创建一个session时,服务器会先检测该请求里面是否包含一个惟一的sessionID,如果是,说明服务器已经为该用户创建过session,只要按照该sesionID检索出该用户的session供用户使用,如果没有sessionID,服务器会为该用户新建一个带有唯一表示服sessionID的session.创建完成后

php 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: a.

小程序跨页面传递data数据的三种方法

Q:小程序怎么把页面data里的数据传到另外的页面? 或者小程序怎么吧表单里的数据传到另外的页面?A:1.可以使用url传递数据. 例如在A页面中传递数据,需要注意的是,wx.switchTab中的url不能传参数. wx.navigateTo({url:‘../pageB/pageB?name=raymond&gender=male’}).在B页面中接收数据,通过onLoad的option:Page({onLoad:function(option){console.log(option.nam

用session_set_save_handler函数实现将session保存在数据库中后session不能跨页面了

<?php /*============================文件说明======================================== @filename:     session.class.php @description:  数据库保存在线用户session,实现在线用户功能! @notice:       session过期时间一个小时,因为我们的站点是使用cookie(有效时间是1小时)登录.                因此我们只记录用户登录的时间,而不是

session生命与跨域跨页面---小疑惑大难题(php)

session跨页面后session消失? session的存储要注意的点: 以文件的形式存储在服务器端. 生命周期有限,根据不同的服务器类型确定. 存储内容为序列化字符串 session文件存储的内容格式如下: 从图片中我们可以读出一些session信息:例如 存在一个session为error,其值为空:还存在一个session为:step,其值为0,等等信息. 现在我们已经知道session的原理机制,那么,要使session可以跨页面调取,必须满足一下几个条件: 1.开启session.

mui框架开发aop的跨页面传值

mui开发跨平台app,其实不乏会涉及到跨页面传值,今天给大家简单介绍一种常用也是简单的传值方法 咱在这里设置一个场景,就是两个页面进入到同一页面展示不同的元素,此时需要在这两个页面各自设置一个区别的标签传递到那个要进入的页面,此时写法如下: 其中一个页面的传值如下: mui.openWindow({ //要跳转的页面地址 url: 'newsShow.html', //要跳转的页面id d: 'newsShow', //页面出现方式 show: { aniShow: 'pop-in' }, /

使用session在jsp页面之间传递多维数组,用于实现全局变量的效果

使用session在jsp页面之间传递多维数组:发送数据的jsp页面:int [][] form_number=new int[4][4]; session.setAttribute("se_form_number",form_number);接收数据的jsp页面:int [][] data  =  (int[][])session.getAttribute("se_form_number"); 原文地址:https://www.cnblogs.com/ming-4

springmvc 在前端jsp页面,select标签显示复合条件。和 session跨页面操作。

在jsp的select标签中,显示一个级联且带有复合查询的结果的select标签. 方法是,在这个类中,定义一个字段,extend,然后把他的get属性,重写为需要的业务 如下 private String extend; public String getExtend() { return this.zhouyiIndex.getName() + "卦 "+this.yaoId+"爻:"+this.yaoContent.substring(0,this.yaoCo

webform(六)内置对象 跨页面传值

内置对象跨页面传值有六种:Request,Response,Session,Cookie,Application,VIewState. 一.Request和ResponseRequest request请求对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息.客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据.request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项.response 响应对象在