首页 后端开发 PHP问题 php session不起作用怎么办

php session不起作用怎么办

Sep 28, 2020 am 09:04 AM
php session

php session不起作用的解决办法:首先打开php的配置文件;然后找到session相关的配置项;接着新建session 文件,并设置权限;最后重新上传文件即可。

php session不起作用怎么办

推荐:《PHP视频教程

解决 php 项目中 session 失效的方法

今天下班坐班车,快到站的时候,上家公司的 leader 发了个 qq 给我,意思是救火,下车后回来在电脑上详细问了下,leader 的描述如下

这个地址  你帮我看下 为啥上传完试卷发布任务  设置答题卡的时候  session 就没了

因为这个项目一开始后台都是我一人开发的,因此很快就找到了问题所在。流程为:用户通过 js 组件上传试卷,在上传试卷的方法中通过 session 存储刚刚上传的试卷详细信息,如名称、后缀、存入资源表的 ID 等,上传成功后,再点击页面上的其他选项,如学校、年级、难易度等,最后点击提交,在提交处理的方法里,一开始便判断刚刚上传的 session 值是否存在,不存在便跳到试卷首页。我在此方法中打印了 $_SESSION,没有值,奇怪了,以前还是好好的。于是我问了下,啥时候开始的,leader 说下午快下班时,老师打电话说上传试卷设置答题卡不成功,老跳转。接着又问了下,动服务器环境了么,leader 说没有。

既然出现了问题,那就解决问题呗。正好这段时间在看《PHP 核心技术与最佳实践》一书,里面就对 session 和 cookie 有详细的描述,同时也加深了我对二者的理解。于是我先打开 php 的配置文件,找到 session 相关的配置项,发现 session.save_path为 /data2/session,我记得以前都是设置为 /data1/session 的,怎么变了。于是我退出来去看看此路径,一开始我以为是该目录权限不够,后来一看,压根就没有该目录,难怪每个 session 不会跨页面。于是新建文件,设置权限,再上传,一切又恢复正常了。

写到这,我也想再唠叨下 session 相关的技术点。session 是存储在服务器端的,默认是以文件方式存储的(session.save_handler = files)。那 session 是如何产生的呢?session 是通过 session_start() 函数产生的 ,当此函数运行时,在 session 存储的目录里生成一个文件和唯一一个与之对应的 session id,通过 session id 可以取出该 session 文件的数据。由于每次运行 session_start() 都会产生新的 seession 文件,那么如何利用到以前生成 session 文件呢,只需 session_id($session_id),那么便不会新产生 session 文件了,而会去读 session id 对应的 session 文件。session id 在默认情况下都是使用在客户端(浏览器)的 cookie 来保存 session id(在 chrome 浏览器上按 F12 键,点击 Resources-cookies,可以看到),使用 $_COOKIE['PHPSESSID'] 可以获取。那个PHPSESSID是session id 的默认名称,在 php.ini 里可以通过 session.name 来设置,在脚本中用 session_name() 来获取 session id 的名称。每次浏览器和服务器对话时,浏览器都会把 session id 传给服务器的,服务器会依据传递过来的 session id 找到相应的 session 文件获取相应信息进行相关操作。而一旦客户端(浏览器)禁用了 cookie,那么服务器端变不会接收到 session id,此时需要显示传递 session id 了。两种方法:手动通过 URL 传递 session id;隐藏表单传递 session id。上述两种方法需要服务端的 php 环境中session.use_trans_sid 值为 1。

啰嗦了那么多,最后还是 linus 那句话,“talk is cheap,show me the code”。

<?php
session_start();
$_SESSION[&#39;arr&#39;] = array(&#39;name&#39; => &#39;molaifeng&#39;, &#39;hobby&#39; => &#39;php&#39;);
?>
<a href="testSession.php?<?php echo session_name(); ?>=<?php echo session_id()?>">testSession</a>
登录后复制
<?php
 
session_start($_REQUEST[session_name()]);
print_r($_SESSION);
登录后复制

代码都看懂的吧,就不解释了。

最后总结下吧,一般情况下出现跨页面 session 失效,基本上是上述列出的几点。1、session.save_path 有误,如权限不够,或是目录不存在;2、服务器php配置中的 session.use_trans_sid 值为 0;3、客户端禁用了cookie。不过我觉得第一种情况出现的频率应该挺高的。

【updated 2018-05-21】

周五晚上上线,又踩了个坑。框架是用 CI , session 写入 MySQL 表。一开始表现形式和上面描述的症状一模一样,于是便重新设置了 seesion 的目录,并赋予了相关的读写权限,然并卵。后来发现该表是个 memory 表,以为是超出了内存表最大值,于是清空了该表,还是然并卵。最后对比了下两个版本的差异,发现在保存 session 的时候新增了两个字段,于是采用排除法,先把两个都注释了,然后一个一个打开,最后定位到了问题。原来,新增的一个值是用来保存一个类型表的所有值的,一开始在做测试时,只有几个值,后来上线时新增了一百多个值,同时那个字段只有 3000 大小,应该是撑爆了。于是先把该字段调大,让线上验证,然后改了下相关逻辑,不把表的所有值都写进去。

以上是php session不起作用怎么办的详细内容。更多信息请关注PHP中文网其他相关文章!

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
<🎜>掩盖:探险33-如何获得完美的色度催化剂
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1430
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP:处理数据库和服务器端逻辑 PHP:处理数据库和服务器端逻辑 Apr 15, 2025 am 12:15 AM

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

PHP的目的:构建动态网站 PHP的目的:构建动态网站 Apr 15, 2025 am 12:18 AM

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

为什么要使用PHP?解释的优点和好处 为什么要使用PHP?解释的优点和好处 Apr 16, 2025 am 12:16 AM

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

PHP的影响:网络开发及以后 PHP的影响:网络开发及以后 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP与Python:用例和应用程序 PHP与Python:用例和应用程序 Apr 17, 2025 am 12:23 AM

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。

See all articles