0

0

php session不起作用怎么办

藏色散人

藏色散人

发布时间:2020-09-28 09:04:14

|

3572人浏览过

|

来源于php中文网

原创

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

php session不起作用怎么办

推荐:《PHP视频教程

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

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

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

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

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

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

绘蛙-多图成片
绘蛙-多图成片

绘蛙新推出的AI图生视频工具

下载

写到这,我也想再唠叨下 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”。

 'molaifeng', 'hobby' => 'php');
?>
testSession

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

最后总结下吧,一般情况下出现跨页面 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速学教程(入门到精通)
PHP速学教程(入门到精通)

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

下载

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

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2452

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1571

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1473

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

951

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1414

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1445

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1305

2023.11.13

PHP 表单处理与文件上传安全实战
PHP 表单处理与文件上传安全实战

本专题聚焦 PHP 在表单处理与文件上传场景中的实战与安全问题,系统讲解表单数据获取与校验、XSS 与 CSRF 防护、文件类型与大小限制、上传目录安全配置、恶意文件识别以及常见安全漏洞的防范策略。通过贴近真实业务的案例,帮助学习者掌握 安全、规范地处理用户输入与文件上传的完整开发流程。

3

2026.01.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

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

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