PHP的SESSION丢失?跨页面SESSION丢失问题
问题分析研究
1、客户端禁用了cookie
2、浏览器出现问题,暂时无法存取cookie
3、php.ini中的session.use_trans_sid = 0或者编译时没有打开--enable-trans-sid选项
实例分析
session_start()声明后在另外一个页面无法获得刚才申明的session值。
打开phpinfo()查看了一下SESSION条发现这两条估计是和我的情况符合要求。
找到/etc/php.ini文件把 www.111cn.net
session.use_trans_sid = 0 修改成了1
重启服务 service httpd restart还是不行,于是仔细看了
session.save_path 它有两个项 Local Value和Master Value
Local Value /var/lib/php/session
Master Value /tmp
我把这两个目录都设置权限chmod a+rwx /var/lib/php/session
chmod a+rwx /tmp
搞定,能传递了。
另外说一下,如果服务器不是自己的,那肯定无法修改权限了。
不过我的是自己的PC机,作为一个调试环境,还是希望大众一些,所以就没有考虑用session_id()来解决这个问题了
总结
1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项,
让PHP自动跨页传递session id。
2、手动通过URL传值、隐藏表单传递session id。
3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。
根据网上有朋友介绍说原因可能是服务器开了GZIP压缩。
下面是用firebug查看我的博客的头信息,Gzip是开了的。
请求头信息原始头信息
代码如下 | 复制代码 |
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
可以从header信息中找到 Content-Encoding 项是 Gzip 。
解决办法比较简单。
就是用 curl 代替 file_get_contents 去获取,然后在 curl 配置参数中加一条
代码如下 | 复制代码 |
curl_setopt($ch, CURLOPT_ENCODING, "gzip"); |
今天用 file_get_contents 抓图片的时候,开始没发现这个问题,废了老大劲才找出来
1. 使用自带的zlib库
如果服务器已经装了zlib库,用下面的代码可以轻易解决乱码问题。
代码如下 | 复制代码 |
$data = file_get_contents("compress.zlib://".$url); |
当然也可以使用curl模块来解决人我的问题这里我给各位推荐一文章,如下你感兴趣的文章
我们知道在mysql查询数据库时如果我们中在查询前设置mysql_query是会出现乱码的,但是很多朋友这样设置mysql_query(“set names utf-8″)但还是乱码这是什么原因呢,下面我们来看看具体设置方法。是在mysql中用utf8表示utf-8而已,就是指代一种编码。
在php中mysql_query(“set names utf-8″);因为mysql中定义的是utf8而不是utf-8,所以这条语句是执行不成功的,效果和mysql_query(“set names test”)一样,所以你存储和获得的mysql编码并没有改变。改为
代码如下 | 复制代码 |
mysql_query(“set names utf8″);就行了。 |
各们注意了前面是uft-8而后面是uft8这是有区别的哦,但这个对于gbk或gbk2312和网页设置又可以一样,这里估计是mysql有原因吧。
今天在做一个东西的时候需要抓取淘宝的一些数据,找到了请求的url,返回了一个callback,看了下callback中的参数是一个对象,通过正则匹配去到了数组,但是在使用json_decode()转换的时候返回的是NULL,老郁闷了,前一段时间要做一个东西也是因为这个原因,没有成功的把json对象转换成php的数组,放弃了,今天又遇到了,终于找到了解决的办法。
原因在于:抓取的数数据是是GBK格式,通过抓包看到,返回的header头中
代码如下 | 复制代码 |
Content-Type:text/html;charset=GBK |
这个时候用icvo转码下,然后在json_decode()就可以正常转换了
代码如下 | 复制代码 |
iconv('gbk','utf-8',$data[1][0]); |
这里还需要主要的是你php代码文件的格式,建议是utf-8无bom头。
昨天发现博客的收录全部掉了,网站关了一个多月,唉。度娘你就块收了我把。
现在年纪大了,面对问题时的嗅觉不再灵敏,第一感觉零是正确的,心想是不是重定向后忘记退出了,后面还有内容输出,可是查了一下代码发现没有问题:
<?php
header('Location: /path');
exit;
?>
在绕了一大圈之后,我猛然意识到环境是Nginx+PHP,响应没有「Content-Length」,数据是通过「Transfer-Encoding」分块发送的,所以重定向的空响应体实际类似:
0\r\n\r\n
不多不少,正好五个字节,细节大家可以参考Chunked transfer encoding。如此看来在此类空响应体的情况下,PHP主动输出一个「Content-Length: 0」说不定会更好些。
那零个字节的响应如何解释呢?查询日志发现如下两种情况:
HEAD “/path HTTP/1.1″ 302 0
GET “/path HTTP/1.0″ 302 0
前者是HEAD请求,不需要响应体;后者是HTTP/1.0,不支持「Transfer-Encoding」。
问题基本解释清楚了,擦擦额头的汗,总算没在同事面前丢脸。
相关文章
PHP session_start()很慢问题分析与解决办法
本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25PHP传值到不同页面的三种常见方式及php和html之间传值问题
在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24- js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
- 直接为大家介绍制作过程,希望大家可以喜欢。HTML结构该页面切换特效的HTML结构使用一个<main>元素来作为页面的包裹元素,div.cd-cover-layer用于制作页面切换时的遮罩层,div.cd-loading-bar是进行ajax加载时的loading进...2015-10-30
- 1,utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a'...2013-10-04
- 一、1 CREATE TABLE NAME(name VARCHAR(10)); 对这个表,缺省情况下,下面两个查询的结果是一样的:复制代码 代码如下: SELECT * FROM TABLE NAME WHERE name='clip'; SELECT * FROM TABLE NAME WH...2015-03-15
- 这篇文章主要介绍了解决vue刷新页面以后丢失store的数据问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
- 一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
PHP分布式框架如何使用Memcache同步SESSION教程
本教程主要讲解PHP项目如何用实现memcache分布式,配置使用memcache存储session数据,以及memcache的SESSION数据如何同步。 至于Memcache的安装配置,我们就不讲了,以前...2016-11-25- 对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
- 这篇文章主要介绍了C#中的session用法 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了解决vuex数据页面刷新后初始化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
Python3使用Selenium获取session和token方法详解
这篇文章主要介绍了Python3使用Selenium获取session和token方法详解,需要的朋友可以参考下...2021-02-17- 这篇文章主要介绍了java后台实现js关闭本页面,父页面指定跳转或刷新操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-16
- 这篇文章主要介绍了JavaScript 获取滚动条位置并将页面滑动到锚点的的相关资料,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下...2021-02-09
- 这篇文章主要介绍了vue实现在进行增删改操作后刷新页面,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05
- 这篇文章主要介绍了Pycharm 跳转回之前所在页面的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-05
- session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
- 这篇文章主要介绍了微信小程序 注册页面的相关资料,需要的朋友可以参考下...2016-10-20
- 这篇文章主要介绍了使用队列(Queue)解决简单的并发问题,讲解的很细致,喜欢的朋友们可以了解一下...2020-06-25