0

0

PHP会话跟踪二(42)

php中文网

php中文网

发布时间:2016-08-08 09:23:12

|

1009人浏览过

|

来源于php中文网

原创

session

什么是session
??session从用户访问页面开始,到断开与网站连接为止,形成一个会话的生命周期。在会话期间,分配客户唯一的一个sessionID,用来标识当前用户,与其他用户进行区分。
??session会话时,sessionID会分别保存在客户端和服务器端两个位置,对于客户端使用临时的Cookie保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务器端也以文本文件形式保存在指定的session目录中。
??session通过ID接受每一个访问请求,从而识别当前用户、跟踪和保持用户具体资料,以及session变量(在session活动期间,可在session中存储数字或文字资料),比如session_name等等,这些变量信息保存在服务器端。
??sessionID可以作为会话信息保存到数据库中,进行session持久化,这样可以跟踪每个用户的登陆次数、在线与否、在线时间等。

cookie和session在php中的使用区别:

cookie和session都可以暂时保存在多个页面中使用的变量,但是它们有本质的差别。
??cookie存放在客户端浏览器中,
??session保存在服务器上。
??它们之间的联系是session ID 一般保存在cookie中,或者放在URL上。
??禁用cookie的方法:(点击IE中的“工具”—“Internet选项”,在弹出的对话框里点击“安全”—“自定义级别”项,将“允许每个对话COOKIE”设为禁用)

实现简单的会话

立即学习PHP免费学习笔记(深入)”;

使用会话的基本步骤如下:
??开始一个会话
??注册会话变量
??使用会话变量
??注销变量并销毁会话

  1 开始一个会话

session_start():开始一个会话或者返回已经存在的会话。
说明:这个函数没有参数,且返回值均为true。如果你使用基于cookie的session,那么在使用session_start()之前浏览器不能有任何输出,否则会发生以下错误:
Warning: Cannot send session cache limiter -headers already sent (output started at/usr/local/apache/htdocs/cga/member/1.php:2)…………

  2 注册一个会话变量

PHP5使用$_SESSION[‘xxx’]=xxx注册SESSION全局变
量。和GET,POST,COOKIE的使用方法相似。
??注意:session_register(),session_unregister(),session_is_registered()在php5下不再使用,除非在php.ini里把register_globle设为on,不过出于安全考虑,强烈建议关闭register_globle。HTTP_SESSION_VARS也不提倡使用了,官方建议用$_SESSION代替之。

  3 使用会话变量

要使一个会话变量在某个范围内可以使用,必须首先使用session_start()函数启动一个会话。这样,就可以通过$_SESSION超级全局数组访问这个变量了。
如:echo $_SESSION[‘myvar’];
??使用前,判断变量是否是已注册的会话变量。
if(isset($_SESSION[‘myvar’]))

  4 page1.php

<?php
session_start(); //使用SESSION前必须调用该函数。$_SESSION[‘name’]=”我是黑旋风李逵!”; //注册一个SESSION变量
$_SESSION[‘passwd’]=”mynameislikui”;
$_SESSION[‘time’]=time();
echo ‘<br/><a href=“page2.php”>通过COOKIE传递SESSION
</a>’; //如果客户端支持cookie,可通过该链接传递session到下一页。
echo ‘<br/><a href=“page2.php?’. SID . ‘”>通过URL
传递SESSION</a>’;//客户端不支持cookie时,使用该办法传递session.
?>

session_id

白月工作室培训学校学员(会员)管理系统1.01 GBK
白月工作室培训学校学员(会员)管理系统1.01 GBK

培训学校管理系统适合于目前的一般培训学校,比如英语、计算机、少儿培训中心等小型培训机构。本系统原本是针对计算机培训所设计。培训学校管理系统的大体功能为:一、 学员信息管理:1. 学员信息管理(会员形式)2. 操作员流水记录二、 学员报名管理1. 学员报名处理学员信息录入以意向性列表方式记录,以后可以跟踪2. 学员再次报名(二次或者多次学习其他项目)3. 学员退学处理4. 学员暂时保留学习处理(类似

下载

session_id()用于设定或取得当前session_id。php5中
既可以使用session_id(),也可以通过附加在url上的SID
取得当前会话的session_id和session_name。
??如果session_id()有具体指定值的话,将取代当前的SESSIONID值。
当cookie没有被禁用时,如果指定了一个session_id()值,每次启动session_start()都会往客户端发送一个cookie值。不论当前SESSIONID是否与指定值相等。
??如果session_id()没有指定值,则返回当前SESSIONID,当前会话没有启动的话,则返回空字符串。
??使用该函数必须在启动会话之前:session_start();

查看当前sessionID
php
session_start();
echo “当前的session id 为:”.session_id();
?>??设置sessionID
php
session_id(“ABC2008”);//必须在session_start()之前session_start();
echo “修改的session id 为:”.session_id();
?>

更换session_id,不影响信息

??session_regenerate_id()更改成功则返回true,失败则返回false。
??使用该函数可以让当前session更换SESSIONID,但不改变当前session的其他信息。

<?php
session_start();
$old_sessionid= session_id();
session_regenerate_id();
$new_sessionid= session_id();
echo "原始sessionID: $old_sessionid<br/>";
echo "新的sessionID: $new_sessionid<br/>";
echo"<pre>";
print_r($_SESSION);
echo"</pre>";
?>

session_name

session_name()返回当前session的name或改变当前session的name。
??如果要改变当前session的name,必须在session_start()
之前调用该函数。注意:session_name不能只由数字组
成,它至少包含一个字母。否则会在每时每刻都生成一个
新的session id.
session改名示例:

<?php
$previous_name= session_name("WebsiteID");
session_start();
echo "新的session名为:$previous_name<br/>";?>

session跨页传递问题

session跨页传递需要考虑三种情况:
??客户端禁用了cookie。
??浏览器出现问题,暂时无法存取cookie
??php.ini中的session.use_trans_sid= 0或者
编译时没有打开--enable-trans-sid选项

解决session跨页传递问题的三条途径

1、设置php.ini中的session.use_trans_sid= 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。
??2、手动通过URL传值、隐藏表单传递session id。
??3、用文件、数据库等形式保存session_id,在跨
页过程中手动调用。

  1 解决会话传递问题

page1.php
??<?php
session_start();
$_SESSION[‘var1’]=“中华人民共和国”;
$url=“<a href=‘s2.php’>下一页</a>”;
echo $url;
?

??page2.php
??<?php
session_start();
echo “传递的session变量var1的值:”.$_SESSION[‘var1’];
?>
??现在你手动关闭客户端的cookie,再运行就得不到结果了

  2 第一种途径

设置php.ini中的session.use_trans_sid= 1
??编译时打开打开了--enable-trans-sid选项”
??注:Linux适用,Windows不适用

以上就介绍了PHP会话跟踪二(42),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

12

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

4

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

18

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel 5.8 中文文档手册
Laravel 5.8 中文文档手册

共74课时 | 88.8万人学习

SESSION实现登录与验证
SESSION实现登录与验证

共10课时 | 9.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号